【问题标题】:cookie not working with cron calling php scriptcookie 不能与 cron 调用 php 脚本一起使用
【发布时间】:2012-10-26 09:44:19
【问题描述】:

我每分钟设置一个 curl cron 调用,当在我的 php db 请求中不涉及 cookie 变量时,它可以完美运行:

$stmt4= $dbh->query("SELECT * FROM schedule_confs WHERE uyi=0  
AND callable=1 AND id_admin=2 "); 

如果查询涉及这样的 cookie:

 $id_user_conecte = Zend_Registry::get("iduser");   

$stmt4= $dbh->query("SELECT * FROM schedule_confs WHERE uyi=0  
AND callable=1 AND id_admin=".$id_user_conecte." "); 

这不起作用,因为没有检测到变量$id_user_conecte所以没有db请求,顺便说一下我正在使用zend。如果我只是回显$id_user_conecte,它就可以工作,所以我的zend 控制器没有问题。 这是正常的,带有 curl 的 cron 没有检测到文档中的 cookie 还是我遗漏了什么?

【问题讨论】:

    标签: php zend-framework cookies curl cron


    【解决方案1】:

    我猜你应该在你的 CURL 请求中设置 cookie

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/');
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIE,$cookie);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
    $data = curl_exec($ch);
    $header=substr($data,0,curl_getinfo($ch,CURLINFO_HEADER_SIZE));
    $body=substr($data,curl_getinfo($ch,CURLINFO_HEADER_SIZE));
    preg_match_all("/Set-Cookie: (.*?)=(.*?);/i",$header,$res);
    $cookie='';
    foreach ($res[1] as $key => $value) {
     $cookie.= $value.'='.$res[2][$key].'; ';
    };
    curl_close($ch);
    

    或者

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/');
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
    $data = curl_exec($ch);
    curl_close($ch);
    

    参考(俄语):http://blog.yousoft.ru/2010/03/31/ispolzuem-curl-php-chast-4-rabotaem-s-cookies-2-sposoba/

    【讨论】:

    • mmh 这是一个 cron curl 调用,它是这样实现的 */5 * * * * /usr/bin/curl http://www.yoursite.com/myscript.php
    • */5 * * * * /usr/bin/curl --cookie "iduser=somevalue" http://www.yoursite.com/myscript.php 在这里学习更多高级用法:curl.haxx.se/docs/httpscripting.html
    猜你喜欢
    • 2016-02-26
    • 2019-12-20
    • 2014-10-12
    • 2011-04-21
    • 1970-01-01
    • 2016-05-06
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多