如何拆分长时间运行的PHP脚本

如何拆分长时间运行的PHP脚本,php,arrays,Php,Arrays,我使用simple_html_dom来抓取网页网站,问题是如果我想抓取很多网页,比如500个url网页,需要很长时间(5-30分钟)才能完成,这会导致我的服务器错误500 我做过的一些事情是: 尝试使用设置时间限制 集合ini\U集合(“最大执行时间”) 添加延迟()定时 我从stackoverflow上读到很多关于使用cronjob拆分长时间运行的PHP脚本的文章,我的问题是如何拆分长时间运行的PHP脚本?你能给出一个最好的方法来分割它吗?你能给我一步一步的剧本吗?因为我是初学者 关于我的程序

我使用simple_html_dom来抓取网页网站,问题是如果我想抓取很多网页,比如500个url网页,需要很长时间(5-30分钟)才能完成,这会导致我的服务器错误500

我做过的一些事情是:

  • 尝试使用设置时间限制
  • 集合ini\U集合(“最大执行时间”)
  • 添加延迟()定时
  • 我从stackoverflow上读到很多关于使用cronjob拆分长时间运行的PHP脚本的文章,我的问题是如何拆分长时间运行的PHP脚本?你能给出一个最好的方法来分割它吗?你能给我一步一步的剧本吗?因为我是初学者

    关于我的程序,我有两个文件: 文件1,我有超过500个链接url数组 文件2,该文件具有处理刮片的功能

    例如,文件1:

    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重复工作任务等