帝国CMS 关于一次性批量超500提交与审核信息报错的问题

论坛搜了下,发现数据表结构发生变化。以前的SQL语句失效
自己琢磨了下,发现可以变相一次性审核

下面是思路:
前提是你的服务器足够好
假设一次性要审核500篇,那么只需要在后台系统参数设置 —》 信息设置—》
后台管理信息 每页显示  个信息   这里填写您要设置的审核数量

根据服务器来设置,建议不要设置的太大。默认是30   审核完毕再改回来,不然以后编辑信息之类的够您等。
如图

如果出现链接不存在

如果PHP版本为:PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量
可以修改PHP.ini默认值为 1000  改为较大的值,就可以一下子审核上万的数据(理论上,根据自己服务器所定)

我改成了20000,同时审核1000的数据没有问题。大家自己去测试!

在php.ini里面设置下就可以了,延长执行时间和内存,自己百度哦。 采集的时候忘记直接审核的同学可以试试,我采集了10万的数据,就是忘记了勾选直接审核那个选项,就是用这个方法 一次审核6000的数据,比一次审核30次的效率高的多哦

php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time 变量指定,如果脚本需要跑很长时间,例如要大量发送电子邮件,或者分析统计大量数据,服务器会在 30 秒后强行中止正在执行的程序,这种情况就要更改php脚本最大执行时间。
PHP设置脚本最大执行时间的三种方法

1、在php.ini里面设置

max_execution_time = 120;

2、通过PHP的ini_set函数设置

ini_set(“max_execution_time”, “120”);

3、通过set_time_limit 函数设置

set_time_limit(120);

以上几个数字设置为0则无限制,脚本会一直执行下去,直到执行结束。

所以,需要长时间执行的脚本,一般在php代码开头处添加如下代码就可以了
set_time_limit(0);

done!

 

php 脚本执行时间和内存设置

set_time_limit ( 0 ); // 脚本执行没有时间限
ini_set(“memory_limit”,”-1″); //不限制内存

 

让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php-fpm以及php.ini调优。本文从内存、OPcache、上传、会话以及安全等方面讲解php.ini的配置调优。

内存优化#

运行 PHP 时需要关心每个 PHP 进程要使用多少内存,php.ini 中的memory_limit 设置用于设定单个 PHP 进程可以使用的系统内存最大值。
这个设置的默认值是 128M,这对于大多数中小型 PHP 应用来说或许合适,不过,如果运行的是微型 PHP 应用,可以降低这个值,以便节省系统资源,反之,如果运行的是内存集中型 PHP 应用,可以增加这个值。这个值的大小由可用的系统内存决定,确定给 PHP 分配多少值是一门艺术,决定给 PHP 分配多少内存,以及能负担起多少个 PHP-FPM 进程时,可以根据以下维度信息进行判断:

  1. 一共可以分配给 PHP 多少内存?以一个 2G 内存的 VPS 为例,这台设备中可能还运行了其他进程,如 MySQL、Nginx 等,那么留 512M 给 PHP 是合适的。
  2. 每个 PHP 进程平均耗费多少内存?这个要监控进程的内存使用量,可以使用命令行命令top,也可以在 PHP 脚本中调用 memory_get_peak_usage() 函数,不管使用哪种方式,都要多次运行同一个脚本,然后取内存消耗的平均值。
  3. 能负担起多少个 PHP-FPM 进程?假设我给 PHP 分配了 512M 内存,每个 PHP 进程平均耗费 15M 内存,那么可以负担起 34 个 PHP-FPM 进程。
    有足够的系统资源吗?最后还需要确认有足够的系统资源运行 PHP 应用并处理预期的流量。

开启Zend OPcache性能加速#

PHP属于解释型语言,在执行代码过程中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码每执行一次就翻译一次,通常会导致执行效率较低,而在PHP7中可以直接开启Opcache来进行性能优化和加速。
PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的),PHP5.5之后opcache可以直接–enable-opcache。对于PHP 5.5以下版本的,可以使用APC来进行缓存。

配置Opcache#

Copy
zend_extension=opcache.so

;(网上很多资料使用engine = On来,是window下的php)

Copy
opcache.enable=1 

;设置多少内存缓存opcode,单位M。如果内存不够用,就会出现一些php文件缓存不到的情况。解决办法是设置缓存到文件中去

Copy
opcache.memory_consumption=128

;最大允许缓存多少个php文件,需要根据项目的文件数来定。这个值一定要比 PHP 应用中的文件数大。最大支持100万个文件

Copy
opcache.max_accelerated_files=4000

;这个设置的值为1时,经过一段时间后 PHP 会检查 PHP 脚本的内容是否有变化,检查的时间间隔由opcache.revalidate_freq设置指定。如果这个设置的值为0,PHP 不会检查 PHP 脚本的内容是否有变化,我们必须自己动手清除缓存的操作码。建议在开发环境中设置为1,生产环境中设置为0。

Copy
opcache.validate_timestamps=0

;验证时间戳的频率。单位是秒。;此选型依赖于opcache.vilidate_timestamps=1(开启检查机制),才生效

Copy
opcache.revalidate_freq = 60

;字符串驻留技术使用多少内存,设置为8M,这是默认值。

Copy
opcache.interned_strings_buffer = 16

;快速释放内存,推荐开启,节省资源。php-7.2.0开始,不需要配置,已集成在php引擎中

Copy
opcache.fast_shutdown=1

;设置:是不是只使用文件来缓存opcode,不使用内存缓存。建议:关掉。最好内存和文件都同时使用

Copy
opcache.file_cache_only=false

;将内存中缓存的opcdoe,备份到磁盘文件中。这样好处,重启服务器时,可以避免重新生成了。注意目录的权限要设对,设置php引擎所属linux用户能够写入。实测,若权限不够,并不会报错,只是缓存不进去

Copy
opcache.file_cache=/apps/php-7.1.7/opcode_file_cache

文件上传#

如果你的应用允许上传文件,最好设置最大能上传的文件大小。除此之外,最好还要设置最多能同时上传多少个文件

Copy
 file_uploads = 1
 upload_max_filesize = 10M
 max_file_uploads = 3

默认情况下,PHP 允许在单次请求中上传 20 个文件,上传的文件最大为 2MB,这里我设置为单次请求最多只能上传 3 个文件,每个文件最大为 10MB,这个值不要设置太大,否则会出现超时。
注:如果非要上传大文件,Web 服务器的配置也要做相应调整。除了在 php.ini 中设置之外,还要调整 Nginx 虚拟主机配置中的 client_max_body_size 设置。
此外,如果是上传特大文件,我建议使用Webuploader专门的上传组件,前端对大文件进行切片,后端php对分片数据进行合并还原文件。有关WebUploader应用请参考本站文章:功能强大的文件上传组件-WebUploader。

执行时间#

max_execution_time 用于设置单个 PHP 进程在终止之前最长可运行时间。这个设置默认是 30 秒,建议将其设置为 5 秒:

Copy
max_execution_time = 5

注:在 PHP 脚本中可以调用***set_limit_time()***函数覆盖这个设置。
假设我们想要生成报告,并把结果制作成 PDF 文件,这个任务可能要花 10 分钟才能完成,而我们肯定不想让 PHP 请求等待 10 分钟,我们应该单独编写一个 PHP 文件,让其在单独的后台进程中执行,Web 应用只需几毫秒就可以派生一个单独的后台进程,然后返回 HTTP 响应。
实际上,我们在跑需要消耗大量时间来完成的任务,一般采用后台进程方式,比如我们可以使用PHP的swoole扩展来生成报表、批量发送邮件耗时长的任务。

处理会话#

PHP 默认的会话处理程序会拖慢大型应用,因为这个处理程序会把会话数据存储在硬盘中,需要创建不必要的磁盘 I/O,浪费时间。我们应该把会话数据保存在内存中,例如可以使用 Memcached 或 Redis。这么做还有个额外好处 —— 以后便于伸缩。如果会话数据存储在硬盘中,不便于增加额外的服务器,如果把会话数据存放在 Memcached 或 Redis 里,任何一台分布式 PHP-FPM 服务器都能访问会话数据。
如果想把会话数据保存在 Memcached 中,需要做如下配置:

Copy
session.save_handler = 'memcached'
session.save_path = '127.0.0.1:11211'

缓冲输出#

如果是在较少的块中发送更多数据,而不是在较多的块中发送较少的数据,那么网络的效率会更高,也就是说,在较少的片段中把内容传递给访问者的浏览器,能减少 HTTP 请求总数。
因此,我们要让 PHP 缓冲输出,默认情况下,PHP 已经启用了输出缓冲功能,PHP 缓冲 4096 字节的输出之后才会把内容发送给 Web 服务器,推荐配置如下:

Copy
output_buffering = 4096
implicit_flush = false

注:如果想要修改输出缓冲区的大小,确保使用的值是4(32位系统)或8(64位系统)的倍数。

安全#

open_basedir:使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定程度上限制了phpshell的危害。我们一般可以设置为只能访问网站目录:

Copy
open_basedir = /data/www

一般我们要禁止系统函数和禁止任何文件和目录的操作,如:

Copy
disable_functions = passthru,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

expose_php = Off:将此项设置为false即不会再header头输出PHP版本信息。
display_errors = Off:生产环境中,我们应该禁止错误提示,如果是本地开发环境,可以设置为On。
log_errors = On:建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因。
error_log:设置PHP错误日志存放的目录。

1、本站admin账户所发布的源码均为测试过的源码
2、我们可以保证源码的完整性,不完整的源码可退款!
3、本站不在线下出售源码,请直接冲值购买!
4、由于商品特殊性,非源码本身问题概不退款!
5、会员发布的资源存在欺诈行为的可向QQ7951368举报,核实将获得奖励!
6、您的支持赞助就是本站长久运行!感谢广大爱好者会员用户的大力支持!

19191资源网 » 帝国CMS 关于一次性批量超500提交与审核信息报错的问题

发表评论

提供最优质的资源集合

立即查看 了解详情