执行PHP操作后网站关闭


Website Down After Performing PHP Action

假设我有一个托管在远程服务器上的网站。我导航到这个网站上的一个页面,并尝试执行一个特定的操作(如果需要,我可以更深入地了解其细节,但目前我只想说,该操作涉及在服务器上运行一个程序,其中包含从数据库中获得的数据。)

页面只是不断加载。因此,我尝试导航到主网站。现在,这种情况也在无决心地持续加载。大约一天后,网站就会回来,所以也许有一些自动化的过程会在一定时间后杀死任务。我的问题是:

我是否可以取消此任务或执行任何操作,以便在不等待一整天的情况下导航到网站?如有必要,我可以详述。

谢谢。

应要求提供一些更深入的信息。

PHP脚本从数据库中检索基于文本的信息。基于这些信息,PHP脚本调用一个可执行程序。可执行文件的输出输出到屏幕。

我检查了mysql进程列表,发现一个进程花费了特别长的时间。我杀死了它,所以可能是可执行文件一直在运行。如果是这样,我将如何确定这一点,如果没有,还有其他可能的事情吗?谢谢

已解决:好吧,基本上Mike Purcell的建议是显示mysql进程的进程列表,并杀死我看到的花了很长时间的进程。一旦完成,只需要重新启动mysql和httpd。再次感谢所有发表评论的人。

听起来这个神秘的操作可能导致了一个未优化的查询被执行,这可能会导致其他查询挂起,直到坏的查询执行完毕。如果你可以通过终端访问mysql服务器,你可以发出以下命令来终止长时间运行的查询:

mysql> show processlist;

此命令将输出任何当前正在运行的查询。请注意time列,它将以秒为单位显示查询执行时间。理论上,任何查询都不应该超过几秒钟,但有些查询可能需要10分钟以上的时间,具体取决于查询和所涉及的数据集。另一个需要注意的列是id列,使用该值可以手动终止查询(就像在linux机器上终止进程一样)。

mysql> kill 387 # 387 is just an example

现在,当您再次运行show processlist命令时,该查询应该会从进程列表中消失。

看起来你拒绝了自己的网站!

也许这个网页不应该是一个网页,而是一个手动或通过cron执行的任务?否则,任何人都可以找到这个页面,并在他们想要的时候杀死你的网站。。。

如果这个程序需要这么多资源,你应该以某种方式限制它:尝试优化它,尝试限制允许的资源(我不知道如何做到这一点,我只知道这是可能的:s)

如果问题已经存在,您可以尝试终止进程(ps aux | grep <processname",然后是kill -9 processid),或者如果问题来自MySQL,则可以终止查询(在您的MySQL客户端内,show processist;然后是kill <query n°>)。请先尝试SQL。

如果站点由于密集的MySQL进程或MySQL进程失控而被锁定,那么最好的办法就是将进程隔离到自己的数据库线程,这样正常的表就不会被锁定。

另一种选择是将一些数据库从(假设)MyISAM切换到InnoDB引擎,如果可以的话。批量插入速度会较慢,性能签名也会有所不同,但您不会受到如此严重的锁定。