curl_exec最大执行时间 - 是什么导致它?

时间:2011-12-04 07:48:30

标签: php xml curl

我收到了可怕的消息:

Fatal error: Maximum execution time of 90 seconds exceeded in /home/pricing.php on line 239

代码是:

$url = "http://*******.com/feed?f=PR&categories=$cat_id&limit=100&startproducts=$ii&price_min=0.01&sortproducts=score&show=properties";

$c = curl_init($url); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_USERPWD, "****:****");
$xml = simplexml_load_string(curl_exec($c)); // line 239

simplexml_load_string是第239行,这肯定意味着已经获得了feed(因为想要更好的词!)并且正在加载字符串,但肯定不会超过90秒?

我的问题是:

1 - 可能/会导致什么?

2 - 将php_value max_execution_time增加到90秒以上并且被认为是安全最大值是否安全?

3 - 是否有更好/更快/更稳定的方式来降低饲料而不是使用卷曲?

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

A1: 是的,你从第二个问题得到答案。它是由php max_execution_time引起的。

A2: 它不安全,除非你在本地托管它,你知道你的脚本在做什么。我认为通常的做法是30秒或最长300秒(5分钟)。

A3 如果您正在处理curl,我希望您在PHP脚本的最顶层设置set_time_limit(0)max_execution_timephp.ini的代码级别等效),并使用curl的超时来处理超时。

curl_setopt($curl, CURLOPT_TIMEOUT_MS, 2000); //in miliseconds

答案 1 :(得分:2)

  1. 外部饲料的卷曲非常慢

  2. 可以将max_execution_time增加到更高的值,但不建议这样做。如果脚本要作为您的普通网页之一,您必须三思而后行。没有用户愿意等待超过90秒来加载页面。

  3. 缓存它!

  4. 缓存细节吧! : -

    不是超级逻辑,
    这意味着您可以准备供稿网址列表,
    然后做一个后台工作(cronjob)来获取每个提要URL并存储到本地存储中 本地XML可用后,从本地加载

    因此,按需访问是相反的,在任何用户访问该页面之前准备好XML 困难将是许多不同的Feed网址,有一个curl_multi_exec应该是理想的同时抓取多个网址。