【发布时间】:2012-04-11 09:48:36
【问题描述】:
我有一些代码试图重用 curl 上下文来执行 put 请求和 get 请求。每次 put 请求后,get 请求都会失败,并显示以下 PHP 警告:
curl_exec(): CURLOPT_INFILE 资源已消失,正在重置为默认值
我可以使用 PHP 的shutup 操作符,但我宁愿正确地重置 curl 上下文。有谁知道如何做到这一点?我也可以使用不同的 curl 上下文,但我宁愿重用连接,因为应用程序正在发送大量请求。我可以保持文件句柄打开,但这似乎是一个 hackish 解决方案,特别是因为这都包含在函数中,所以我可以调用 doPut、doGet 等 p>
$curlContext = curl_init();
$fh = fopen('someFile.txt', 'rw');
curl_setopt($curlContext, CURLOPT_URL, $someUrl);
curl_setopt($curlContext, CURLOPT_PUT, TRUE);
curl_setopt($curlContext, CURLOPT_INFILE, $fh);
curl_setopt($curlContext, CURLOPT_INFILESIZE, $size);
$curl_response1 = curl_exec($curlContext);
fclose($fh);
curl_setopt($curlContext, CURLOPT_PUT, FALSE);
curl_setopt($curlContext, CURLOPT_HTTPGET, TRUE);
curl_setopt($curlContext, CURLOPT_URL, $someOtherUrl);
$curl_response1 = curl_exec($curlContext);
谢谢。
【问题讨论】:
-
对不起。在我为这个问题输入的快速伪代码中犯了一个错误。我的意思是 CURLOPT_HTTPGET,而不是 CURLOPT_GET。