如何停止php正在执行的后台代码?

zengzhenkun 2010-11-26 02:38:24
我有个定时器会定时发邮件,内容如下

//mailtask.php
....
ignore_user_abort(true); // run script in background
set_time_limit(0); // run script forever
do{
sendmail(XXX);
sleep(300);
}while(true);

现在我想停止掉它,但是好像没办法,我把这个php文件删掉了也还不行,还是会继续执行,请问有什么
办法呢?除了停掉服务器和设置退出检测变量。(因为开始就没设置退出检测变量,所以现在设置也没用)。
...全文
521 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihefe 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amani11 的回复:]

PHP code

do{
//
if(file_exists('dir/somefile.l……'))
{
exit();//OR sleep(…);
}
//
sendmail(XXX);
sleep(300);
}while(true);
[/Quote]

照这样的想法是不是可以

do{
//全局变量或者常量 value=0,value=1 ,循环的时候会不会读取内存的其他值?
include '....';
if($value)
{
exit();//OR sleep(…);
}
//
sendmail(XXX);
sleep(300);
}while(true);


清风闲客 2010-11-27
  • 打赏
  • 举报
回复
进程怎么kill掉啊?进程的id也不是唯一的吧
amani11 2010-11-26
  • 打赏
  • 举报
回复
杀进程是不错


不过是我的话,修改了代码,可能定时半夜重启下吧。。。。进程有时候找准也是挺麻烦。看服务器情况
l_jiayou 2010-11-26
  • 打赏
  • 举报
回复
现在只有重启Apache了,但是这个循环设计的时候就不科学。
while($swith==1){

}
至少你可以用其他代码将$swith设置成其他值,已达到关闭循环的目的。
codeyell-com 2010-11-26
  • 打赏
  • 举报
回复
定时发邮件,最好不要用PHP写。
杀进程,重启APACHE
把电掐了
jaapee 2010-11-26
  • 打赏
  • 举报
回复
如果Linux,可以用crontab来定时执行PHP程序
igaojie 2010-11-26
  • 打赏
  • 举报
回复
杀进程啊··kill掉不就完事了
ihefe 2010-11-26
  • 打赏
  • 举报
回复
感觉用php做定时任务太牵强。 用java 或者其他支持线程的语言。推荐用serlvet做个中间件(tomcat当容器)使用xmlrpc进行处理。安全问题要考虑。
CunningBoy 2010-11-26
  • 打赏
  • 举报
回复
kill掉定时器的任务进程
清风闲客 2010-11-26
  • 打赏
  • 举报
回复
我也遇到过这个问题,发过帖子,一直没解决
http://topic.csdn.net/u/20100929/13/ada26fec-6a82-47a0-8dfc-0745b637db19.html
无奈,把apache重启了一下
amani11 2010-11-26
  • 打赏
  • 举报
回复
只能写好代码,停止服务,重启了吧。已经永驻运行了

不过通过判断某文件可能是比较简单的思路,。受前几天一帖子启发,你也可以利用shmop共享内存,来控制不同进程间通讯来实现判断
amani11 2010-11-26
  • 打赏
  • 举报
回复

do{
//
if(file_exists('dir/somefile.l……'))
{
exit();//OR sleep(…);
}
//
sendmail(XXX);
sleep(300);
}while(true);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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