调用服务器的 PHP 脚本是不是异步运行?

Posted

技术标签:

【中文标题】调用服务器的 PHP 脚本是不是异步运行?【英文标题】:Does a server-called PHP script run asynchronously?调用服务器的 PHP 脚本是否异步运行? 【发布时间】:2015-12-02 10:59:46 【问题描述】:

如果服务器通过命令行(在 Ubuntu 服务器上)调用 php 脚本,该脚本的多个实例可以同时运行吗?在我的例子中,它是一个 PHP 脚本,它使用 FFmpeg 转换上传的视频。因此,如果八个用户同时(或非常接近)上传一个视频,该 PHP 脚本的八个实例会同时运行,还是会一个接一个地排队?如果他们排队,有没有办法改变它,以便多个实例可以同时运行?

【问题讨论】:

同一个脚本的多个实例确实可以同时运行。 谢谢 - 这就是我需要知道的!如果你留下答案,我会勾选它。 【参考方案1】:

同一脚本的多个实例确实可以同时运行。需要注意的是,同时运行的脚本越多,性能就会下降。您还应该注意,如果您正在与数据库交互,并且您 LOCK 一个用于写入的表,则不能异步完成并且会导致形成队列(尽管是次要的,取决于正在完成的操作)。

证明

您可以通过创建一个 PHP 脚本来检查这一点,该脚本在其中某处调用 exec() 并执行另一个 PHP 脚本(或者实际上是同一个 - 但注意不要创建无限循环)。可能会在文件或数据库中添加时间戳,以便您可以充分看到它的发生。

【讨论】:

"同时运行的脚本越多,性能就会下降。"大多数 php 脚本使用任何服务器资源的一小部分,因此在出现任何可测量的性能下降之前,可能会同时运行相当多的脚本。对于一些运行多个脚本的任务会提高整体性能 @Dagon 取决于代码的好坏;)。如果您编写非常笨重的密集代码,它确实有可能造成瓶颈。与单次相比,即使是非常干净的代码多次运行也可能会更慢(但我同意,这种差异可以忽略不计)。我觉得在他去写一些疯狂的run x 100000000 脚本之前值得指出。 另外,在我的情况下,PHP 脚本正在使用 shell_exec 调用 FFmpeg,所以...是的...肯定会降低服务器性能 :) @PeregrineStudios 好吧...取决于服务器 ;)!

以上是关于调用服务器的 PHP 脚本是不是异步运行?的主要内容,如果未能解决你的问题,请参考以下文章

PHP开启异步多线程执行脚本

html中调用python脚本

PHP实现异步调用方法研究

php代码在WSL系统上运行swoole 扩展.还需要安装搭建服务器吗?

在脚本和一些 PHP 服务器(如脚本)之间共享变量(数组)

如何用php作Linux自动执行脚本?