crontab跑PHP脚本的问题

huanxiangzhe24 2010-04-20 12:13:06
如果在命令行,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代码应该是没有问题的.求解.....
...全文
637 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
stream1990 2010-08-24
  • 打赏
  • 举报
回复
感谢,妈的,这问题找死人,让我在同事面前抬不起头来了
huanxiangzhe24 2010-04-30
  • 打赏
  • 举报
回复
问题找到了.
太多echo把程序给堵死了.-_-!!
居然会堵死.

所以,手动执行的时候,没有问题.放到crontab中就有问题.
改法也很简单.
把startParse.sh中
php /usr/local/clientreport/parser/entry.php &
改为
php /usr/local/clientreport/parser/entry.php >> /dev/null &

结贴散分.
ghostxyz0 2010-04-20
  • 打赏
  • 举报
回复

要包含的文件 的 require/include 裏 用絕對路徑, 不能用相對路徑
总哈哈 2010-04-20
  • 打赏
  • 举报
回复
出错了,楼主。
CodeBus 2010-04-20
  • 打赏
  • 举报
回复
set_time_limit(0);
PIGer920 2010-04-20
  • 打赏
  • 举报
回复
加上set_time_limit(0); 呢?
巍健 2010-04-20
  • 打赏
  • 举报
回复
打印输出,调试,查找在哪推出的,为什么推出的!
然后贴出来,让我长个见识!
thinkinginAOCP 2010-04-20
  • 打赏
  • 举报
回复
最好能知道运行停止的地方,把应该有提示的地方,都打印一下看看.
wcqqq 2010-04-20
  • 打赏
  • 举报
回复
xuexi
CodeBus 2010-04-20
  • 打赏
  • 举报
回复
在shell环境下执行php /usr/local/clientreport/parser/entry.php没有错?
我记得php命令行的头是 #!/usr/local/php/bin/php 加在entry.php文件 <?php 的前面。
#!后是php执行文件的位置。。
set_time_limit(0);放在<?php后就可以了…… 这个脚本跑一次是多久呢?
kingfly1818 2010-04-20
  • 打赏
  • 举报
回复
你逐句调试吧
ghostxyz0 2010-04-20
  • 打赏
  • 举报
回复
shell腳本研究不深
如果
/usr/local/clientreport/php /usr/local/clientreport/parser/entry.php

能運行成功的話,

那就在腳本之前加上 #!/bin/sh

因為就我所知,cron是會把腳本執行完才退出的
如果被中途退出
要麼就是 程序出錯, 要麼就是腳本出錯, 要麼就是系統出錯

過路人的無稽之談,請高手無視
huanxiangzhe24 2010-04-20
  • 打赏
  • 举报
回复
没有报错~~~就是无声无息的退了出来.
手动运行也OK.

主体程序是一个for循环.
TO PIGer920:
前面几次都可以执行成功,但执行到一定时间,就程序就强行退出.所以应该不是require/include 的问题,不然一次都执行不了.

TO:vn700
在for循环中,用了set_time_limit(60);每次都给多60s,一样被强制退出.


执行时间不超过20毫秒,但是可以执行.
jlzan1314 2010-04-20
  • 打赏
  • 举报
回复
58 11 * * * root cd /usr/local/clientreport/parser && php ./entry.php
jlzan1314 2010-04-20
  • 打赏
  • 举报
回复
58 11 * * * root sh cd /usr/local/clientreport/parser && php entry.php

你可以试试,不知道对不对.
PIGer920 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ghostxyz0 的回复:]
要包含的文件 的 require/include 裏 用絕對路徑, 不能用相對路徑
[/Quote]
有可能是这个原因
thinkinginAOCP 2010-04-20
  • 打赏
  • 举报
回复
报什么错了?帖出来啊.

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧