我需要运行一个非常长的PHP脚本(四个半,五个小时)。
脚本有时会成功运行,但有时会被莫名其妙地杀死(可能与共享托管有关吗?)。
我认为运行脚本的解决方案可能是较小的块。
为了做到这一点,我写了一个脚本来存储它的状态&在移动位置之前,在xml文件中定位并执行一个脚本块。
我在连接脚本的最后一点时遇到问题,这应该结束当前进程&重新执行脚本。
或者我正在咆哮错误的树!
我已经阅读了我在SO和其他地方可以找到的内容,但我仍然没有更聪明:(
请帮助!!!
丹
答案 0 :(得分:2)
考虑到你有一个永远运行但不会导致不一致数据的脚本,你可以使用一个cronjob。
问题是您需要知道您的脚本是否仍在运行,因为您可能不想启动它两次。我想到的两个解决方案是脚本的进程ID(getmypid())或使用时间戳。
对于PID:
你需要访问php的exec()(以及朋友)和linux'“ps”等命令行工具。
对于时间戳:
你必须弄清楚X应该是多长时间。
答案 1 :(得分:1)
PHP不是运行长脚本的首选语言。我假设你在浏览器中运行它?尝试通过SSH登录并使用php /path/to/script.php
运行脚本。
如果您可以在本地运行,则可以在本地计算机上安装基本的Apache / PHP安装,然后运行它。如果您没有shell访问权限,请使用此选项。
答案 2 :(得分:1)
如果可能的话,我会尝试将长时间运行的进程拆分为自己的进程。让您的PHP脚本启动计算,然后查找可能已完成的线索(类似于包含当前计算进度的状态文件)。然后你甚至可以使用AJAX技术为用户提供一个很好的小进度条;)
答案 3 :(得分:1)
如果您可以在此服务器上访问cron,则可以每分钟运行一次脚本来处理下一个数据块。
答案 4 :(得分:0)
我同意Josh的观点,并建议您尽可能以其他方式对桌面应用程序进行编程。 PHP肯定不是为这样的东西构建的,这需要脚本运行4-5个小时。这可以肯定max_execution_time或脚本占用共享主机中的CPU但移动到桌面应用程序或SSH是我建议的锻炼。