需要为php中的所有用户同时调用相同的函数

时间:2015-10-15 05:34:33

标签: php function codeigniter

我有一个start_processing("set 1")函数需要6小时才能完成set1,

我想处理第2组,设置3 ....如何在同一时间处理所有这些?从我放的时候开始

<?php
start_processing("set1");
start_processing("set2");
start_processing("set3");
?>

需要18小时。

我希望在6小时内完成所有处理过程。

最后我得到了一个解决方案

我已经 curl_multi - 它好得多。保存握手 - 每次都不需要它们!

使用 curl_multi_init 并行运行流程。这会产生巨大的影响。

1 个答案:

答案 0 :(得分:1)

除非您使用PHP作为Apache模块,否则可以使用pcntl_fork创建多个进程,每个进程处理一个函数调用。

if(pcntl_fork())
    start_processing("set1");
else if(pcntl_fork())
    start_processing("set2");
else
    start_processing("set3");

如果你有不同数量的工作集,只需将它们放在一个数组中并循环遍历它。请记住,太多的进程可能会使您的系统过载!

另一个更轻量级的选项是使用php pthreads AFAIK与Apache一起使用,但需要先安装相应的php-extension。

如sandeep_kosta和Niranjan N Raju所述,第三种可能性是为每个工作集创建一个Cronjob。