如果在命令行,PHP脚本可以正常运行.但是如果放到crontab中会运行到一半就退出,感觉好像是时间片不够.
但在网上又找不到有关crontab时间片的定义.
startParser.sh:
cd /usr/local/clientreport
php /usr/local/clientreport/parser/entry.php &
crontab:
58 11 * * * root sh /usr/local/clientreport/startParser.sh &entry.php:
<?php
require_once 'fileparser.php';
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
$object = new FileParser;
$object->parserFile();
?>
~不知道为什么entry.php总是执行到一半就退出.php代码应该是没有问题的.求解.....

解决方案 »

  1.   


    要包含的文件 的 require/include 裏 用絕對路徑, 不能用相對路徑
      

  2.   

    58 11 * * * root sh  cd /usr/local/clientreport/parser && php entry.php 你可以试试,不知道对不对.
      

  3.   

    58 11 * * * root cd /usr/local/clientreport/parser && php ./entry.php  
      

  4.   

    没有报错~~~就是无声无息的退了出来.
    手动运行也OK.主体程序是一个for循环.
    TO PIGer920:
    前面几次都可以执行成功,但执行到一定时间,就程序就强行退出.所以应该不是require/include 的问题,不然一次都执行不了.TO:vn700
    在for循环中,用了set_time_limit(60);每次都给多60s,一样被强制退出.
    执行时间不超过20毫秒,但是可以执行.
      

  5.   

    shell腳本研究不深
    如果
    /usr/local/clientreport/php /usr/local/clientreport/parser/entry.php能運行成功的話,那就在腳本之前加上 #!/bin/sh因為就我所知,cron是會把腳本執行完才退出的
    如果被中途退出
    要麼就是 程序出錯, 要麼就是腳本出錯, 要麼就是系統出錯過路人的無稽之談,請高手無視
      

  6.   

    在shell环境下执行php /usr/local/clientreport/parser/entry.php没有错?
    我记得php命令行的头是 #!/usr/local/php/bin/php 加在entry.php文件 <?php 的前面。
    #!后是php执行文件的位置。。
    set_time_limit(0);放在<?php后就可以了…… 这个脚本跑一次是多久呢?
      

  7.   

    问题找到了.
    太多echo把程序给堵死了.-_-!!
    居然会堵死.所以,手动执行的时候,没有问题.放到crontab中就有问题.
    改法也很简单.
    把startParse.sh中
    php /usr/local/clientreport/parser/entry.php &
    改为
    php /usr/local/clientreport/parser/entry.php >> /dev/null &结贴散分.