我创建了一个使用ignore_user_abort()函数在后台运行的脚本。但是,我愚蠢到不插入任何类型的代码来使脚本停止,现在它每30秒发送一次电子邮件......
有没有办法停止脚本?我在共享主机中,所以我无法访问命令提示符,我不知道PID。
答案 0 :(得分:7)
有没有办法停止脚本?我在共享主机中,所以我无法访问命令提示符,我不知道PID。
然后没有。
但是你确定你没有任何shell访问权限吗?即使通过PHP?如果你这样做,你可以尝试......
<?php
print `ps -ef | grep php`;
...如果你能从中识别出那个过程......
<?php
$pid=12345; // for example.
print `kill -9 $pid`;
即使您没有运行shell命令的权限,您也可以在/ proc(在Linux系统上)找到pid并使用POSIX扩展名终止....
<?php
$ps=glob('/proc/[0-9]*');
foreach ($ps as $p) {
if (is_dir($p) && is_writeable($p)) {
print "proc= " . basename($p);
$cmd=file_get_contents($p . '/cmdline');
print " / " . file_get_contents($p . '/cmdline');
if (preg_match('/(php).*(myscript.php)/',$cmd)) {
posix_kill(basename($p), SIGKILL);
print " xxxxx....";
break;
}
print "\n";
}
}
答案 1 :(得分:5)
昨天我来到了这个帖子!我错误地在页面中有一个无限循环,这个循环不应该被访问,而I/O to 100
和CPU usage to 100
I/O
的增加是因为某些php errors
而且它正在变得越来越多logged
和日志文件大小的增长超出了任何人的想象。
以上所有技巧都不适用于我的shared hosting
。
我的解决方案
在cPanel中,转到PHP版本(当前版本除外)
暂时选择任何PHP版本。
然后Apply Changes
。
为什么工作
有一些php错误的无限循环的脚本是一个过程,所以我只需要杀死它,更改php版本加强重启的服务,如php和Apache,并且因为重启涉及早期进程被杀,我很放松I/O
和CPU
使用情况稳定。另外,我在更改php版本之前修复了这个bug :)
答案 2 :(得分:0)
你是如何部署脚本的?当然你可以删除它(如果这是一个可接受的选项)。否则修改它并插入一些逻辑,只允许它根据服务器时间每n分钟/小时/天发送一次邮件?
重。停止脚本执行(或者更确切地说系统试图执行它)你是如何安排执行的?是某种类型的gui到crontab或什么?你能不能撤消你在那里所做的事情(因为你无法访问命令行/终端)?
rob ganly
答案 3 :(得分:0)
简单。 致电支持部门,取消支持。 下次,不要执行你无法控制的事情。