如何使用多个处理器运行PHP脚本

时间:2017-08-24 11:43:04

标签: php linux

我运行一个使用四个处理器之一的bash php脚本。该脚本压缩我的照片。现在问题:如何运行我的脚本以获得使用3个处理器的权利?它肯定可以加速所有文件的压缩,其中大约有一百万个。

2 个答案:

答案 0 :(得分:3)

您无法在多个处理器上运行相同的脚本,因为脚本只有一个执行线程。

如果您对工作负载进行分区,则可以运行多个脚本实例。操作系统将尝试在可用的CPU上分发这些内容。 (您可以强制进程运行特定的CPU但不值得付出努力)。

诀窍是知道如何分配工作负载。最简单的解决方案是有一个调度程序进程,它将输入文件分配给脚本的实例并调用这些实例,例如:通过将文件列表作为命令行参数传递。请注意,您为调用脚本选择的方法需要是非阻塞的(例如,使用popen,NOT exec)。

但是对于很多地方的大量文件,这可能会变得很麻烦。

另一种方法是让调度程序将文件列表写入数据库,并为脚本实例读取队列以进行工作:

$THIS_INSTANCE_ID=$argv[1];
$NUMBER_OF_INSTANCES=$argv[2];
$qry="SELECT filename
FROM conversions
WHERE MOD(id, ${NUMBER_OF_INSTANCES})=${THIS_INSTANCE_ID}
AND finished=false"; 

答案 1 :(得分:1)

使用多个核心的唯一方法是运行多个线程或进程。

对于Web应用程序,每个正在运行的脚本通常有一个PHP进程,因此情况就是这样:多个请求将自动使用多个核心。

虽然您不能为同一请求使用多个核心,但通常这对于网络应用程序并不重要。