我编写了一个 PHP 脚本,它从一个站点执行 Web 抓取并解析我的网站的输入。
该脚本由 cronjob 定期驱动,所有内容都托管在共享的 Web 服务器中。
问题是:我的脚本每天终止几次,没有错误消息并且每次都在代码中的随机位置。
该脚本很长,执行 2 个 HTTP Gets 和 4 个 HTTP Posts 到其他国家/地区的网站,每个 HTTP 请求大约需要 3 秒才能完成;它还向/从 MySql 数据库写入文件和 r/w。
在尝试了以下事情后,我被困住了:
1)与我的托管支持(IxWebHosting)交谈 - 他们只是浪费我的时间,否认他们的责任,并建议我将 cronjob 定期限制为最大 5 分钟速率(之前是 3 分钟间隔,但它没有改变任何东西。)
2) 我没有从 cronjob 上下文运行,而是切换到以下方法:Cronjob 每 5 分钟调用一次“加载器 PHP 脚本”。湾。“加载器 PHP 脚本”使用 HTTP Get 调用真正的 PHP 脚本,并在等待答案之前终止。C。真正的 PHP 脚本执行大约 20 秒的工作(这里是程序在随机位置终止的地方)。
3)在代码的许多地方放置一些日志文件时间戳,以便查看程序每次运行的终止位置 - 这向我展示了程序在代码中的任何地方终止。
4)为了证明这不是我的代码错误,我进行了以下测试:Cronjob 调用另一个加载器 PHP 脚本。湾。PHP 脚本对不同的测试目的 PHP 脚本执行 HTTP 请求,并在不等待响应的情况下终止。C。第二个 PHP 脚本将执行 20 秒的虚拟任务:睡眠一秒并将时间戳写入日志文件 20 次。
结果:测试成功!第二个程序没有失败......这意味着它与我的代码和我正在运行的网络服务器有关 - 但是因为它每次都在不同的地方失败并且每天只有大约 10 次(从 288 次它运行一天)然后我不知道它在哪里(并且没有 PHP 的错误消息)。
在此先感谢,很抱歉描述太长 - 我很乐意应要求提供更多详细信息。