我需要减少脚本的加载时间。这是卷曲和简单的解析dom。 这是我的剧本,我需要帮助:( 它持续大约2分钟,我需要解析许多不同的页面!
require_once ("simple_html_dom.php");
function curl ($page){
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "URL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "POSTFIELDS");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
ob_end_clean();
return $result;
}
$start = microtime(true);
set_time_limit(0);
$text = "here text of last page";
$i = 0;
while(strpos(str_get_html(curl($i)), $text) == null){
$html = str_get_html(curl($i));
foreach($html->find('div#box-container-inner div.box') as $e){
PRINT etc... only for test
}
echo "parsata la pagina ".($i+1)."<br>";
$i++;
}
$time_elapsed_secs = (microtime(true) - $start)/60;
echo $time_elapsed_secs;
答案 0 :(得分:0)
只需将卷曲超时作为参数设置添加到60秒或您的选择。
curl_setopt($ ch,CURLOPT_TIMEOUT,60);
答案 1 :(得分:0)
您似乎在每个循环中运行了两次CURL(一次评估while循环条件,一次设置$ html)并将结果字符串转换为每个循环的对象。每次循环时,这是四个潜在密集型进程,每个循环可以降低到两个。
相反,您可以在while循环评估中将$ html变量分配给str_get_html(curl($i))
的结果:
while(strpos(($html = str_get_html(curl($i))), $text) === false) {
// $html = str_get_html(curl($i));