php 相关的设置以及各种报错问题

1.Maximum execution time of 30 seconds exceeded解决办法

1)set_time_limit(0);

2)修改配置文件php.ini

      max_execution_time = 0;

 

PHP Fatal error: Maximum execution time解决方法

 

2.Allowed memory size of 134217728 bytes exhausted 解决方法

  134217728/1024/1024 = 128

  对于不使用的变量,使用unset($var) 来删除它,否则内存占用越来越多!

1)ini_set('memory_limit', '-1')      # -1为不受限

2)修改配置文件php.ini

      memory_limit = -1;

当报错信息与数据库相关时,原因可能为:

1.查询出来的数据量大。

2.数据量不大。但是你php.ini配置的内存大小太小

3.逻辑出现死循环

memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) 最大单线程的独立内存使用量。也就是一个web请求,给予线程最大的内存使用量的定义。

memory_limit的内存分配,标配是128M。一旦独立的线程超过了128M,那PHP会报错: Fatal error: Allowed memory size of 33554432 bytes(32M)对于8G内存的服务器,如果同时并发的响应达到50,每个都是128M的峰值,那估计也是服务器会卡死的时候。 
尽量降低128M的内存配置,如果调整至64M,服务器的负载基本能下降一半左右,如果能调整至32M效果更好。但是对于应用的要求就更高,很多表建立初期就没有考虑到这个问题,如果你要采用memcache作为数据的存储,必须提前完成优化数据表的设计部署,降低独立线程PHP的内存使用量,服务器的响应和负载降低的就不仅仅是几个百分点的效果了。

3.php post参数的个数不能超过1000

  修改php配置文件,/etc/php/7.0/apache2/php.ini,修改参数max_input_vars以及max_execution_time
 
修改后重启php-fpm以及apache2服务即可

4.PHP 配置文件php.ini 

 安装lamp系统后,服务器上的php.ini配置文件有多个,如下所示:

它们的区别为:

1.当从命令行执行PHP binary时,cli/php.ini会被使用,你可以通过在命令行运行php –ini来查看。

php -m   // 查看phpcli 模式下 扩展模块
php -v   // 查看php cli 版本

 

2.apache2/php.ini是lamp系统中使用的,可以通过在webserver中php页面添加phpinfo()方法来认证。

这两种php.ini会频繁使用,分开最主要的优点是:在不同的情况下,会有不同的配置文件,例如:由webserver使用的php.ini文件,会配置比较短的max_execution_time,而在命令行中的php.ini文件,会配置比较长的max_execution_time。

5.Vendor/PHPExcel/PHPExcel/Shared/String.php  LINE: 579报错Maximum execution time of 0 seconds exceeded

 

 通过研究后发现是代码中有一个json字符串特别大,包含字符有1.3M,所以对使用json_decode($str,true)进行处理时的报错

 6.下载的文件打开报错有不可读取的内容

 

 不管是下载的ppt还是excel,都会存在这种现象,解决方法是在生成报告后赶紧退出,如下所示:

 

 

 

参考:

https://blog.csdn.net/ufan94/article/details/78928486

 

posted @ 2021-10-09 16:18  声声慢43  阅读(203)  评论(0编辑  收藏  举报