【发布时间】:2014-04-16 02:33:27
【问题描述】:
对于我的大多数 cron 作业,我使用 php /path/to/file.php > /dev/null,这使我只有在有输出流式传输到 stderr 时才能收到电子邮件。除了执行 cURL 请求之外,这对所有事情都非常有用。
使用CURLOPT_RETURNTRANSFER = true,如果我从浏览器运行文件,它不会输出,但通过 cron 作业,我会收到一封包含请求详细信息的电子邮件,包括连接尝试和发送/接收的标头。
有没有办法将此输出通过管道传输到标准输出,或者最好将其从输出流中完全删除,因为如果我从浏览器运行它,我也不希望/不需要看到此信息。
感谢您的宝贵时间。
代码:
getCURL("www.example.com", array(CURLOPT_COOKIEFILE => COOKIES));
function getCURL($url, $opt = array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "someuseragent");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIES);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt_array($ch, $opt);
$response_raw = curl_exec($ch);
$header = str_replace("\r\n\r\n", "", substr($response_raw, 0, curl_getinfo($ch, CURLINFO_HEADER_SIZE)));
foreach (explode("\r\n", $header) as $i => $line){
if ($i === 0){
$headers['http_code'] = $line;
} else {
list ($key, $value) = explode(': ', $line);
$headers[$key] = $value;
}
}
$body = substr($response_raw, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
curl_close($ch);
return array(
"header" => $headers,
"body" => $body,
"cookies" => COOKIES);
}
【问题讨论】:
-
添加你的代码,这样我们就可以准确地看到发生了什么
-
@cmorrissey 我已经添加进去了。
-
我想你想将
CURLOPT_VERBOSE设置为false -
@cmorrissey 啊,干杯伙伴,解决了。您想将其作为答案提交以便我接受吗?