PHP curl_multi_exec不起作用并发出一个奇怪的错误:4不是第0行的Unknown中的有效cURL句柄资源

时间:2015-11-06 03:59:03

标签: php curl libcurl

我试图使用curl_multi_exec并且它发出了一个奇怪的错误。我直接从PHP手册复制了代码。它适用于开发,但不适用于生产。开发速度快,约4秒。这是日志:

2015-11-06T03:00:40.265225+00:00 app[web.2]: [06-Nov-2015 03:00:40 UTC] PHP Fatal error:  Maximum execution time of 30 seconds exceeded
in /app/controllers/ShoppingController.php on line 148
2015-11-06T03:00:40.297189+00:00 app[web.2]: #0 [internal function]: yii\base\ErrorHandler->handleFatalError()
2015-11-06T03:00:40.297316+00:00 app[web.2]: #1 {main}
2015-11-06T03:00:40.304584+00:00 app[web.2]: [06-Nov-2015 03:00:40 UTC] PHP Warning:  (null)(): 4 is not a valid cURL handle resource in Unknown on line 0
2015-11-06T03:00:40.304698+00:00 app[web.2]: [06-Nov-2015 03:00:40 UTC] PHP Warning:  (null)(): 5 is not a valid cURL handle resource in Unknown on line 0
2015-11-06T03:00:40.304820+00:00 app[web.2]: [06-Nov-2015 03:00:40 UTC] PHP Warning:  (null)(): 4 is not a valid cURL handle resource in Unknown on line 0
2015-11-06T03:00:40.304916+00:00 app[web.2]: [06-Nov-2015 03:00:40 UTC] PHP Warning:  (null)(): 5 is not a valid cURL handle resource in Unknown on line 0

我找不到带有" PHP警告的网页:(null)():4不是第0行和第34行中未知的有效cURL句柄资源。这是代码:

if ($ebayRequest) curl_multi_add_handle($mh, $ebayRequest);
if ($prosperentRequest) curl_multi_add_handle($mh, $prosperentRequest);

//execute the handles
$curlTime = microtime(true);
$active = null;
do {
  $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
  if (curl_multi_select($mh) != -1) { # line 148
    do {
      $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  }
}

这是有效的,这是我现在一直在使用的。 (除非有时这并没有返回完整的回复。)

$running = null;
do { 
    $mrc = curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0 || $mrc == CURLM_CALL_MULTI_PERFORM);

0 个答案:

没有答案