首页 论坛 PHP报错internal server error的解决办法
帖子详情

通常php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time 变量指定,倘若你有一个需要颇多时间才能完成的工作,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据分析工作,服务器会在 30 秒后强行中止正在执行的程序,如何解决这个问题呢。

PHP报错internal server error的解决办法

解决方法

修改执行时间,php.ini 中 max_execution_time。在php.ini里查找

  • max_execution_time

默认是30秒.改为

  • max_execution_time = 0

0表示没有限制

另一个办法是在 PHP 程序中加入 ini_set(‘max_execution_time’, ‘0’),数值 0 表示没有执行时间的限制

另一种方法是可以在php程序中加入

  • set_time_limit();

来设定页面最久执行时间.

  • set_time_limit(0);//0表示没有限制
  • <?php
  • //max_execution_time=100;
  • ini_set(“max_execution_time”, 1); //用此function才能真正在运行时设置
  • for($i=1; $i< 100000; $i++)
  • {
  • echo “No. {$i}\n”;
  • echo ‘<br />’;
  • flush();
  • }
  • ?>

修改内存

需要注意的是,memory_limit 的值越高,即单个 PHP 进程占用的内存越多,系统能够并发处理的请求越少。例如,一个 2G 内存的机器

  • memory_limit 设为 128M, 则同时最多能处理 16 个请求
  • memory_limit 设为 256M, 则同时最多能处理 8 个请求
  • memory_limit 设为 512M, 则同时最多能处理 4 个请求

虚拟主机的 PHP memory_limit 是 PHP 单个脚本单次执行最大可用内存限制。默认限制为 256MB,最大可调整为 512MB。

现已知php7以下,单脚本执行最大内存限制是2G,php7不限制;

php里只要把memory_limit设为-1,就不会限制你跑cli脚本时的内存限制,剩下的就是操作系统ulimit会限制任何进程的最大内存。

配置 memory_limit 可以设置的吧,然后就看你可用物理内存了。

调整PHP脚本单次最大可执行时间为60秒

  • php_value max_execution_time 60

上述规则中的60可以替换为你需要的执行时间,单位为秒。允许的最大执行时间为180秒,为确保服务器性能,执行超过180秒的用户进程将被强制终止。

修改可执行时间是不推荐的操作。正常速度的网站程序,应当在2秒内完成执行。网站程序执行时间越长,访问者等待网站初次响应的时间就越长。如果网站在日常访问中经常遇到Request Timed Out超时错误,请优先检查网站程序设置和资源使用情况。超过10秒仍未响应的网站,大部分访问者会选择关闭网页。不问缘由地增大可执行时间,不仅可能无法提升网站用户体验,而且可能使异常脚本无法及时终止,降低网站的负荷能力。

    版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://yxymk.net/forum/27305.html

    发表评论
    暂无评论