我必须执行100多个PHP脚本并行执行,每个php脚本在数据库中插入新数据并更新以前的记录。
例如,每个脚本网址都是这样的:
example.com/update.php?data-from-project-1.com
example.com/update.php?data-from-project-2.com
example.com/update.php?data-from-project-2.com
所以...
更新页面的工作方式如下:
Update.php
<?php
//insert some new records from project data
//update some records
?>
我正在尝试:
Cron JOB PAGE:
$urls=array("data-from-project-2.com", "data-from-project-2.com",....)
for ($index = 0; $index < count($urls); $index++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "update.php?$urls[$index]");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch); }
但我想这会按顺序执行所有页面,也会产生超时问题。无论如何通过cron作业页面并行执行它们。我不需要任何输出,他们只需要更新数据库。任何帮助,将不胜感激。感谢
答案 0 :(得分:0)
我喜欢假装这是我的回复,但SO的答案应该涵盖它。
Executing multiple PHP scripts in parallel, and being notified when finished
答案 1 :(得分:0)
使用Php Thread。简单的例子:
<?php
class workerThread extends Thread {
public function __construct($i){
$this->i=$i;
}
public function run(){
while(true){
echo $this->i;
sleep(1);
}
}
}
for($i=0;$i<50;$i++){
$workers[$i]=new workerThread($i);
$workers[$i]->start();
}
?>
您可以在每个线程中编写每个更新。但我建议你为每个线程创建一些批次。因为每个线程也使用一些时间来启动。 或者每个线程可以使用全局数组变量“urls”的某些部分(start_index,end_index)
答案 2 :(得分:0)
您可以使用PHP的curl_multi_init()
异步处理您的任务。