[英]How can I speed this up?
我有一个脚本,我认为这是非常基本的刮,你可以称之为,但它平均需要至少6秒......是否有可能加快它? $ date变量仅用于对代码进行计时,并且不会添加任何重要的时间。 我设置了两个定时标记,每个定时标记之间约为3秒。 下面的示例URL用于测试
$date = date('m/d/Y h:i:s a', time());
echo "start of timing $date<br /><br />";
include('simple_html_dom.php');
function getUrlAddress()
{
$url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
$date = date('m/d/Y h:i:s a', time()); echo "<br /><br />after geturl $date<br /><br />";
$parts = explode("/",$url);
$html = file_get_html($url);
$date = date('m/d/Y h:i:s a', time()); echo "<br /><br />after file_get_url $date<br /><br />";
$file_string = file_get_contents($url);
preg_match('/<title>(.*)<\/title>/i', $file_string, $title);
$title_out = $title[1];
foreach($html->find('img') as $e){
$image = $e->src;
if (preg_match("/orangeBlue/", $image)) { $image = ''; }
if (preg_match("/BeaconSprite/", $image)) { $image = ''; }
if($image != ''){
if (preg_match("/http/", $image)) { $image = $image; }
elseif (preg_match("*//*", $image)) { $image = 'http:'.$image; }
else { $image = $parts['0']."//".$parts[1].$parts[2]."/".$image; }
$size = getimagesize($image);
if (($size[0]>110)&&($size[1]>110)){
if (preg_match("/http/", $image)) { $image = $image; }
echo '<img src='.$image.'><br>';
}
}
}
$date = date('m/d/Y h:i:s a', time()); echo "<br /><br />end of timing $date<br /><br />";
示例URL
UPDATE
这实际上是时间标记显示的:
时间的开始01/24/2012 12:31:50 am
在geturl 01/24/2012 12:31:50之后
在file_get_url 01/24/2012 12:31:53之后
时间结束01/24/2012 12:31:57 am
http://www.ebay.co.uk/itm/Duke-Nukem-Forever-XBOX-360-Game-BRAND-NEW-SEALED-UK-PAL-UK-Seller-/170739972246?pt=UK_PC_Video_Games_Video_Games_JS&hash=item27c0e53896`
它可能是getimagesize函数 - 它将获取并获取页面上的每个图像,以便确定大小。 也许你可以用curl写一些内容来获取Content-size的标题(但实际上,这可能是getimagesize所做的)。
无论如何,在我写了一些蜘蛛的那一天,它做起来很慢,互联网速度比以往任何时候都要好,它仍然是每个元素的一个提取。 我甚至不关心图像。
我不是一个PHP人,但它看起来像你要去网上获取文件两次...
首先使用这个:
$html = file_get_html($url);
然后再用这个:
$file_string = file_get_contents($url);
因此,如果每次点击都需要几秒钟,那么您可以通过找到将其减少到单个网络点击的方式来缩短时间。
要不然,或者我是盲目的。 这是一个真正的可能性!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.