PHP报错internal server error的解决办法
通常php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time 变量指定,倘若你有一个需要颇多时间才能完成的工作,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据分析工作,服务器会在 30 秒后强行中止正在执行的程序,如何解决这个问题呢。
解决方法
修改执行时间,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://www.xiaomaw.cn/734.html
来源:小马博客
文章版权归作者所有,未经允许请勿转载。