执行时运行并行脚本

时间:2014-03-22 11:02:12

标签: php curl exec

我试图弄清楚如何在同一台服务器上运行脚本的并行执行。因为现在我正在使用cUrl,但我不确定这是最好还是最聪明的方法。我希望,当我的主要PHP脚本运行时,能够使用主脚本中的数据执行另一个脚本,但主脚本不等待其他脚本,就像我包含它一样。我被禁止使用javascript或jQuery运行一些ajax,所以我想出的是cUrl解决方案......但是当这两个脚本在同一台服务器上时,这是正确的方法吗?

以下是我卷曲的一个例子:

$data = array("username" => "$get_username"
             ,"password" => "$md5_pass"
             ,"sqlId" => (int)$userid
             ,"appversion" => (int)$get_version
             ,"proversion" => (int)0
             );

$url = "http://myserver.com/secondscript.php";

$ch = curl_init( $url );
# Setup request to send json via POST.
$payload = json_encode( array("action" => "newUser", "player" => $userid, "json" => $data ));
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
# Return response instead of printing.
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
# Send request.
$result = curl_exec($ch);
curl_close($ch); 

希望在这件事上寻求帮助或/和指导。

提前致谢: - )

1 个答案:

答案 0 :(得分:0)

我遇到了类似的挑战。我做了一个小的php演示,在UNIX系统上显示真正的并行处理(Ubuntu和PHP 5.3.2)......

  • 使用真正的UNIX并行进程
  • 限制并行化(可配置)
  • 限制系统级别的执行时间
  • 使用proc_ * php命令(proc_open,proc_terminate,...)

这是我的游乐场,展示了所有内容:Github-Repo: PHP-Process-Control

演示开始定义要执行的PHP脚本:

$manager = new ProcessManager();
$manager->addScript("doit.php 1", 5);
$manager->addScript("doit.php 2", 10);
$manager->addScript("doit.php 3", 35);
$manager->exec();

也许你可以使用部分或一些想法来并行执行你的脚本。