如何在PHP脚本失败时避免服务器不响应

如何在PHP脚本失败时避免服务器不响应,第1张

概述如何在PHP脚本失败时避免服务器不响应

我找不到这个答案,可能我没有用正确的词search。

当一个PHP脚本失败(脚本中的错误,无限循环,无休止的sql调用等),整个服务器变得“忙碌”。 这就像所有的资源被采取,并集中在试图执行该脚本。 通过重新启动apache / Nginx,服务器恢复正常。

这怎么可以避免? 设置脚本超时将无法解决它,因为如果它甚至10秒超时服务器将不响应这10秒的每个人。

有什么办法可以避免这种情况发生? 是的,解决脚本问题将停止发生,但我相信有一种方法来防止在服务器端的这一点。

apache和sftp的权限在wordpress的wordpress自动更新

Oauth 2在Mendeley与Java

在此服务器上找不到请求的URL /前端/ ru / site / login /

Apache dbutils在更新sql中更改列名称

禁止:您无权访问此服务器上的WAMP错误

刚才我有一个例子。 该脚本通过调用该网站中的服务来获取国家/地区代码。 由于某种原因,该网站不会随机为我们服务,所以脚本将永远等待接收文件内容。

$getcountry = file_get_contents('http://ip-API.com/PHP/'. getUserIP());

谢谢

如何通过tomcat和PHP之间的会话

如何阻止Apache列出我的用户目录的内容

RewriteRule会导致页面重新加载两次

如何使用Apache 2.0为IE 8浏览器设置X-UA兼容标头为IE = Emulateie7?

通过PHP运行复杂的ROS shell命令

设置脚本超时将无法解决它,因为如果它甚至10秒超时服务器将无反应的10秒给大家。

如果您的服务器设置正确,请不要使用。 设置PHP超时是处理失控脚本的正确方法(除了解决问题的实际原因外)。 致命脚本错误将立即终止,不占用服务器资源。

您的文章似乎认为只有一个PHP脚本的实例在任何时候运行。 这不应该是这样的。 您的Web服务器应该为每个由PHP处理的Web请求启动新的进程或线程,直到某些配置的限制。 或者,如果您正在使用PHP-FPM,则将其交给PHP进程池。 在任何情况下,您的整个服务器都不应该锁定一个请求。

现在,如果你的代码或服务器有严重的问题,那么所有的请求可能需要很长的时间,并挂起更多的请求。 唯一的解决办法是解决问题的根源,并保持合理的超时作为故障安全。

对于Apache,这些是您要检查的一些设置: serverlimit , Startservers , MaxClIEnts 。 对于PHP-FPM,您可以从max_children设置开始。

该脚本通过调用该网站中的服务来获取国家/地区代码。 由于某种原因,该网站不会随机为我们服务,所以脚本将永远等待接收文件内容。

这是一个非常普遍的问题,必须由您的代码来解释。 你永远不能相信,第三方服务将立即返回。 很明显,将这样的请求卸载到后台进程是最好的(例如cron)。 但是,如果需要将其作为普通页面请求的一部分来完成,则应该始终设置合理的超时时间。 对于使用file_get_contents具体示例,请减少套接字超时:

ini_set('default_socket_timeout',10); // 10 seconds

总结

以上是内存溢出为你收集整理的如何在PHP脚本失败时避免服务器不响应全部内容,希望文章能够帮你解决如何在PHP脚本失败时避免服务器不响应所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1291510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存