我遇到了一个我写过的脚本的问题。我正在做一些基本的屏幕抓取并将其保存到WordPress数据库。该脚本的功能应该如此,但是当我尝试执行多个页面(大约20页)时,运行一大块脚本后会出现500错误。在脚本页面上我包含了这个:
set_time_limit(0);
ignore_user_abort(1);
我还在我的服务器根目录中的php.ini文件中包含了max_input_time = 0
,理论上它应该防止它超时但是我连接到其他两个URL所以我很好奇它是否可能有与其中一个连接有关。基本上,它是这样的:
Script in folder on server -> Queries info from a URL and pulls it back into my server -> Analyzes the data -> Sends it to WordPress database on my server but in a different directory
有没有办法确定超时发生的位置?我的假设是它没有在脚本页面上发生,但是通用500错误,我不确定如何更深入地进行故障排除以确定发生了什么。
感谢您的帮助!
修改
我打开了错误报告,这是我收到的错误:
[Thu Jul 03 21:29:12 2014] [8808155] [fcgid:warn] (104)Connection reset by peer: [client 50.184.161.228:51983] mod_fcgid: error reading data from FastCGI server
[Thu Jul 03 21:29:12 2014] [8808155] [fcgid:warn] (104)Connection reset by peer: [client 50.184.161.228:51983] mod_fcgid: ap_pass_brigade failed in handle_request_ipc function
错误中的IP地址不是我的IP地址,也不是我正在搜索的网站的IP地址,因此我不确定它的位置。
我不确定这是否与服务器配置有关,显然我将仅限于更新,因为我在GoDaddy共享服务器上。
我找到了这篇文章:
我想我回答了我的问题。我想我无法更新设置。现在说,有没有办法,我可以让脚本抓取五个页面,休息,再爬五个等等。我已经使用sleep()
但我认为这仍然是运行'脚本的一部分'所以它不是停止并重新启动,它只是继续脚本但暂停一秒钟?
答案 0 :(得分:0)
您可能希望查看phpinfo()以查看是否允许在后台运行脚本。那里可能会禁用ignore_user_abort。
之后 - 你真的确定你拥有对“另一个目录中的数据库”的访问权限吗?我不确定一个站点的用户对另一个站点的用户的访问权限,除非在您的设置中您拥有相同的用户或拥有用户,这被授予对两个数据库的访问权限。
关于IP地址 - 某些托管服务提供商将其整个网络隐藏在公共IP地址集之后。查看$ _SERVER变量,看看你是否有一个奇怪的IP地址X_HTTP_FORWARDED来检查这一点信息。如果存在,则表示您站点的传出连接通过某个代理服务器,而本地您的网站有另一个IP地址。并且,从该服务器上的网站到该服务器上的另一个网站的连接可能正在使用此本地IP地址,而不是外部IP地址。