关于cronjob的php curl并非完全沉默

时间:2015-04-23 21:30:36

标签: php curl crontab

我有一个php例程,可以进行简单的cURL调用,并通过cron作业自动运行。 crontab行是:

<?php

    $verbose_log = fopen('log.txt','a');

    $my_curl = curl_init();

    // initialize options array
    $options = array(
         CURLOPT_HEADER => false
        ,CURLOPT_RETURNTRANSFER => true
        ,CURLOPT_VERBOSE => true
        ,CURLOPT_STDERR => $verbose_log
        ,CURLOPT_HTTPHEADER => array('Accept: application/json')
        ,CURLOPT_CAINFO => realpath('../../certs/ca.crt')
        ,CURLOPT_TIMEOUT => 5
        ,CURLOPT_SSL_VERIFYPEER => true
        ,CURLOPT_SSL_VERIFYHOST => 2
        ,CURLOPT_SSLCERT => realpath('../../certs/client.crt.pem')
        ,CURLOPT_SSLKEY => realpath('../../certs/client.key.pem')
        ,CURLOPT_SSLCERTTYPE => 'PEM'
        ,CURLOPT_URL => 'https://www.mydomainname.com/api.php'
    );

    curl_setopt_array($my_curl, $options);

    // execute cURL and store results (response/error/errno)
    $response = curl_exec($my_curl);
    $error_str = curl_error($my_curl);
    $error_no = curl_errno($my_curl);

    curl_close($my_curl);

    if ($error_no != 0)
        // email error

    fclose($verbose_log);

?>

这是 curl_call.php

* Closing connection #0

出于某种原因,每次运行(总是成功),服务器都会向我发送一封包含一行的电子邮件:

patch

我在其他帖子中读到 CURLOPT_MUTE 已弃用,我找不到其他方法让它“更安静”。

有谁知道这条线是什么意思? 我该怎么做才能阻止它向我发送这封单行电子邮件?

1 个答案:

答案 0 :(得分:0)

谢谢Marc B。

解决方案正是你所说的......

我只需要更改我的crontab行,添加2>&1。它现在写着:

0 * * * * php5 -q /home/curl_call.php >> /home/curl_call.txt 2>&1

本文详细介绍了其含义:

https://unix.stackexchange.com/questions/163352/what-does-dev-null-21-mean-in-this-article-of-crontab-basics

现在,电子邮件内容(* Closing connection #0)已添加到输出文件( curl_call.txt ),电子邮件本身已停止。

再次感谢。