如果在命令行,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代码应该是没有问题的.求解.....
但在网上又找不到有关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代码应该是没有问题的.求解.....
要包含的文件 的 require/include 裏 用絕對路徑, 不能用相對路徑
手动运行也OK.主体程序是一个for循环.
TO PIGer920:
前面几次都可以执行成功,但执行到一定时间,就程序就强行退出.所以应该不是require/include 的问题,不然一次都执行不了.TO:vn700
在for循环中,用了set_time_limit(60);每次都给多60s,一样被强制退出.
执行时间不超过20毫秒,但是可以执行.
如果
/usr/local/clientreport/php /usr/local/clientreport/parser/entry.php能運行成功的話,那就在腳本之前加上 #!/bin/sh因為就我所知,cron是會把腳本執行完才退出的
如果被中途退出
要麼就是 程序出錯, 要麼就是腳本出錯, 要麼就是系統出錯過路人的無稽之談,請高手無視
我记得php命令行的头是 #!/usr/local/php/bin/php 加在entry.php文件 <?php 的前面。
#!后是php执行文件的位置。。
set_time_limit(0);放在<?php后就可以了…… 这个脚本跑一次是多久呢?
太多echo把程序给堵死了.-_-!!
居然会堵死.所以,手动执行的时候,没有问题.放到crontab中就有问题.
改法也很简单.
把startParse.sh中
php /usr/local/clientreport/parser/entry.php &
改为
php /usr/local/clientreport/parser/entry.php >> /dev/null &结贴散分.