php导出数据太多超时 php 导出excel

PHP中几种常见的超时处理全面总结具体代码如下:
?php
$ch = curl_init();
$timeout = 5;
【php导出数据太多超时 php 导出excel】curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法 。
它可以比CGI或者Perl更快速地执行动态网页 。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快 。
几种常见的PHP超时处理方法【Web服务器超时处理】
[ Apache ]
一般在性能很高的情况下php导出数据太多超时,缺省所有超时配置都是30秒php导出数据太多超时,但是在上传文件php导出数据太多超时,或者网络速度很慢的情况下php导出数据太多超时,那么可能触发超时操作 。
目前apachefastcgiphp-fpm模式下有三个超时设置php导出数据太多超时:
fastcgi超时设置:
修改httpd.conf的fastcgi连接配置,类似如下:
代码如下:
IfModulemod_fastcgi.c
FastCgiExternalServer/home/forum/apache/apache_php/cgi-bin/php-cgi-socket/home/forum/php5/etc/php-fpm.sock
ScriptAlias/fcgi-bin/"/home/forum/apache/apache_php/cgi-bin/"
AddHandlerphp-fastcgi.php
Actionphp-fastcgi/fcgi-bin/php-cgi
AddTypeapplication/x-httpd-php.php
/IfModule
php导出excel时经常导出不完整就结束了怎么办?设置超时\x0d\x0a在服务器上设置也可以,在当前文件写代码也可以\x0d\x0a服务器上找到php安装目录下的php.ini\x0d\x0a找到max_execution_time这句,将值改为你想要的时间,或者该为0表示无时间限制\x0d\x0a如果在当前文件写代码\x0d\x0a那就在网页最顶端写这条php代码\x0d\x0aset_time_limit (0);\x0d\x0a括号内的参数是数字,写上你想要的时间,比如100就是100秒\x0d\x0a0表示无时间限制
php怎么导出大量数据的Excelphp导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决 。
方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询 。
原因:主要是数据库性能和写文件性能 。分页查询可以解决数据库压力的问题, 生成多个文件可以解决单个文件太大,后期维护Excel文件的问题 。
要注意的:
1. 在导出逻辑文件开头 , 一定要声明 set_time_limit(0) , 防止脚本超时;
2. 每个文件生成后 , 适当的sleep一下 , 让程序休息一下下;
3. 因为一次导出最后要将生成的多个Excel文件打包成一个压缩包 , 所以要删除掉生成的Excel文件,节省服务器存储空间;
PHP file_get_contents 函数超时的几种解决方法这里就简单介绍两种:
一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间 。
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的 。真正的修改file_get_contents延时可以用resource
$context的timeout参数:
复制代码
代码如下:
$opts
=
array(
‘http'=array(
‘method'=”GET”,
‘timeout'=60,
)
);
$context
=
stream_context_create($opts);
$html
=file_get_contents('',
false,
$context);
fpassthru($fp);
二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回
FALSE,所以可以下面这样编写代码:
复制代码
代码如下:
$cnt=0;
while($cnt
3
($str=@file_get_contents('http…'))===FALSE)
$cnt;
php导出数据太多超时的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于php 导出excel、php导出数据太多超时的信息别忘了在本站进行查找喔 。

    推荐阅读