如何拆分长时间运行的PHP脚本
我使用simple_html_dom来抓取网页网站,问题是如果我想抓取很多网页,比如500个url网页,需要很长时间(5-30分钟)才能完成,这会导致我的服务器错误500 我做过的一些事情是:如何拆分长时间运行的PHP脚本,php,arrays,Php,Arrays,我使用simple_html_dom来抓取网页网站,问题是如果我想抓取很多网页,比如500个url网页,需要很长时间(5-30分钟)才能完成,这会导致我的服务器错误500 我做过的一些事情是: 尝试使用设置时间限制 集合ini\U集合(“最大执行时间”) 添加延迟()定时 我从stackoverflow上读到很多关于使用cronjob拆分长时间运行的PHP脚本的文章,我的问题是如何拆分长时间运行的PHP脚本?你能给出一个最好的方法来分割它吗?你能给我一步一步的剧本吗?因为我是初学者 关于我的程序
set_time_limit(0);
ini_set('max_execution_time', 3000); //3000 seconds = 30 minutes
$start = microtime(true); // start check render time page
error_reporting(E_ALL);
ini_set('display_errors', 1);
include ("simple_html_dom.php");
include ("scrape.php");
$link=array('url1','url2','url3'...);
array_chunk($link, 25); // this i try to split for 25 but not working
$hasilScrape = array();
for ( $i=1; $i<=count($link); $i++){
//this is the process i want to call function get_data to scrape
$hasilScrape[$i-1] = json_decode(get_data($link[$i-1]), true);
}
$filename='File_Hasil_Scrape';
$fp = fopen($filename . ".csv", 'w');
foreach ($hasilScrape as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
设置时间限制(0);
ini设置(“最大执行时间”,3000)//3000秒=30分钟
$start=microtime(真);//开始检查渲染时间页面
错误报告(E_全部);
ini设置(“显示错误”,1);
包括(“simple_html_dom.php”);
包括(“scrape.php”);
$link=array('url1'、'url2'、'url3'…);
数组块($link,25);//这个我试着分成25份,但不起作用
$hasilsrape=array();
对于($i=1;$i您的链接数组从何而来?3000!==30分钟。3000秒==50分钟。
如果您遇到服务器错误500,您的?队列和子工作是什么?您有很多工作要做,您需要维护一个任务队列,这些任务可以由多个子进程完成,而这些子进程只需完成一小部分工作。您将获得成功We’我们需要关注的不仅仅是要处理的单个脚本执行,或者使用cron etcWhere重复工作者任务您的链接数组来自何处?3000!==30分钟。3000seconds==50分钟。
如果您遇到服务器错误500,您的?队列和子工作是什么?如果您有大量工作要做,您需要维护一个任务队列,以便e由许多子进程来完成,这些子进程只需对工作的一小部分进行削片处理。您将不得不着眼于处理单个脚本的执行,或者使用cron重复工作任务等