【问题标题】:500 Internal Server Error depending on external loaded files?500 内部服务器错误取决于外部加载的文件?
【发布时间】:2017-02-02 08:30:32
【问题描述】:

我有一个 500 内部服务器错误,并且很可能在我的情况下认为加载外部文件是我的问题。 在此之前,我在状态栏中收到了消息Waiting for available sockets...

我在谷歌上找到了这个信息:

PHP 编码超时

如果您的 PHP 脚本建立外部网络连接,则连接 可能会超时。如果尝试的连接过多并超时,则此 将导致“500 内部服务器错误”。为了防止这些超时 和错误,你需要确保 PHP 脚本是用 一些超时规则。然而,通常情况下,当 连接到数据库或外部连接到远程资源(例如: RSS提要)是困难的。他们实际上冻结了脚本 继续运行。

删除任何外部连接都可以提高 您的网站并减少您收到“500 内部 服务器错误。”

1) 我从我的网络服务器(*.php 文件)动态生成/加载 css 和 js 文件。所以我不知道现代浏览器是否真的缓存了这个或者根本不能缓存这个并在每个页面加载时将它作为一个新请求来处理?因为 PHP 会根据给定的参数生成这个,以告知应该加载哪个 css/js。这甚至是可能导致此 500 Internal Server Error 的问题或问题吗?

2) 您可以推荐哪些 Chrome 扩展程序来跟踪和调试所有网络数据?除了 Chrome DevTools 之外,一般还有哪些工具可以帮助我?

3) 引用的文字说我必须注意超时。我应该检查哪些重要来源? ajax 请求或 php 会话可能是问题吗?

4) 最重要的是:如何修复此错误?如果这有助于提及,可以在 www.vaymodels.com 导航该域。我无法使用任何浏览器打开它,甚至无法使用我的智能手机(禁用 WiFi)。也许你们中的某个人可以打开它并查看页面源代码。

另外值得一提的是,这种行为是最近几天才开始的。当我在我的网站上工作时,我不断地上传文件并刷新了很多域,并且随机它根本没有加载 5-10 分钟。但是之后可以在没有 500 错误的情况下达到它。现在看来是遥不可及了。

编辑:我的虚拟主机刚刚告诉我他们将我的 FPM 限制从 15 更新到了 30。他说的 php 进程太多。这可能是由我通过 cronjob 加载的文件执行的 mysql 查询引起的,或者我应该寻找哪些进程并且很可能是问题所在?

【问题讨论】:

  • 1。如果文件的 URL 相同,则浏览器可能会缓存它。如果它导致问题?不知道!我们不知道你的代码是什么样的。 2。在 SO 上询问第三方软件是无关紧要的,并且 chrome 插件无法看到服务器上发生的情况(因为它不会向浏览器返回任何内容)。 3。超时可以在 php.ini 或iniset() 中设置。只是谷歌:“在 php 中设置超时”。 4。我不能说如何“修复”错误,因为我们无法知道是什么原因造成的。你检查过你的错误日志吗?
  • 我刚刚编辑了我的问题。感谢您指出了这一点。如果我知道哪些部分与我的案例相关,我会展示我的代码。而且我完全混淆了,因为我主要在前端工作,对不起。我会阅读这个主题。我也无法访问我的错误日志,但就像我的编辑所说:它与 FPM 限制和太多进程有关。我认为我的 cronjob 可能导致了这种情况,但我不确定这是否是我应该考虑的过程。

标签: php apache internal-server-error http-status-code-500 external-dependencies


【解决方案1】:

您应该首先了解导致 500 错误的脚本。您可以查看错误日志,也可以在可疑脚本的顶部添加:

ini_set("display_errors",1);
error_reporting(E_ALL);

这应该可以帮助您了解问题所在,但也可能会破坏输出,因此如果您在生产环境中使用它,请小心。

关于 js 和 css 资源的缓存:您可以使用 .htaccess 文件中的一些指令来指示 apache 告诉浏览器使用文件的缓存副本,例如:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/css                  "access plus 1 month"
ExpiresByType application/javascript    "access plus 1 month"
ExpiresByType text/javascript           "access plus 1 month"

<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>

</IfModule>

另外请记住,这样的过期限制在您不应该经常更改的生产环境中可能会很好。

希望有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2018-03-26
    • 1970-01-01
    • 2019-01-17
    • 2011-10-17
    相关资源
    最近更新 更多