2015-05-27
最近在做一个东西,用PHP写的,由于要将数据库中的图片名字读出来,然后访问对应图片,读取图片的大小以及分辨率,重新存入数据库。数据量现在才是处理5000条的,如果不加任何设置的话,php默认最大执行时间是30秒。
所以30秒内,我只能处理700条,刚开始只能手动,七百、七百的执行了。后来感觉这样不行,以后的数据量会过10W,这样会累死我的。
网上搜索了下,有三种处理方式。
第一种
很直接,既然你默认30秒,那么我就把你的默认时间设置长点,或者直接没有限制。
在php中添加,php ini_set('max_execution_time', '100');函数就可以了,100代表100秒,如果你设置了0,那么就代表没有限制。(ps:我用的是zend的结合,设置为0的时候,不是没有限制,而是大概是120的样子,我的解决方法是,把这个值设置的so big)
第二种
本人很喜欢,是利用php和批处理的结合。
[php]
@REM<?php
@REM =='
@SET PHPCLI="D:/Program Files/Zend/Zend Studio - 8.0.1/plugins/org.zend.php.debug.debugger.win32.x86_5.3.18.v20110322/resources/php53/php.exe"
@REM PHPCLI 设置你的php.exe的路径
@%PHPCLI% %0
@goto :EOF
@REM';?>
<?php
include'C://Program Files//Zend//Apache2//htdocs//pic_gather//pic_operate.php';
echo "/rfinish";
ob_flush();
exec("pause");
?>
是批处理命令,所以我还花了1个小时特地看了下批处理命令。大致翻译下上面的程序。
@:不显示后面的指令,如果去掉,指令会在命令窗口中打印出来
REM 是批处理的注释,后面的是注释,不执行。跟@不同,@只是命令不打印出来,并不表示注释。
程序开始执行,首先是bat运行
[php]
@SET PHPCLI="D:/Program Files/Zend/Zend Studio - 8.0.1/plugins/org.zend.php.debug.debugger.win32.x86_5.3.18.v20110322/resources/php53/php.exe"
设置了PHPCLI的值
[php] view plaincopy
@%PHPCLI% %<span style="font-family: Arial,Helvetica,sans-serif;">0</span>
%PHPCLI% 代表的就是你上面设置的路径,这里表示执行php.exe,然后%0代表此.bat文件所在的路径, 连起来的意思就是用php.exe运行.bat文件。
会出现上面现象呢,php可不认为REM是注释呀,只认为是普通的字符。
就会首先打印@REM,然后
[php]
<?php
@REM =='
@SET PHPCLI="D:/Program Files/Zend/Zend Studio - 8.0.1/plugins/org.zend.php.debug.debugger.win32.x86_5.3.18.v20110322/resources/php53/php.exe"
@REM PHPCLI 设置你的php.exe的路径
@%PHPCLI% %0
@goto :EOF
@REM';?>
这里,php.exe可认识了,表示上面意思?在php中@可认识否?这个表示抑制错误,那么就是字符串‘’中的内容与REM进行==,那么有被@抑制错误。安然度过。
进入下一段
[php]
<?php
include'C://Program Files//Zend//Apache2//htdocs//pic_gather//pic_operate.php';
echo "/rfinish";
ob_flush();
exec("pause");
?>
这里就是你要执行的程序了。我不想写在这里面,那么就include一下,这样容易让.bat成为一个模板。
到此你的php.exe算是走完了,可是还没完呢,刚刚批处理命令才到
[php]
@%PHPCLI% %0
之后为了不让批处理命令不认识php的语言,用了
[php]
@goto :EOF
来结束程序。
有人问为什么不直接这样:
[php]
@SET PHPCLI="D:/Program Files/Zend/Zend Studio - 8.0.1/plugins/org.zend.php.debug.debugger.win32.x86_5.3.18.v20110322/resources/php53/php.exe"
@REM PHPCLI
@%PHPCLI% %0
@goto :EOF
<?php
include'C://Program Files//Zend//Apache2//htdocs//pic_gather//pic_operate.php';
echo "/rfinish";
ob_flush();
exec("pause");
?>
不用搞这么复杂,我也试了下,
发现cmd命令行会出现:
@SET PHPCLI="D:/Program Files/Zend/Zend Studio - 8.0.1/plugins/org.zend.php.debu
g.debugger.win32.x86_5.3.18.v20110322/resources/php53/php.exe"
@REM PHPCLI
@%PHPCLI% %0
@goto :EOF
这代码的原作者,就是想避免出现这样的情况,然打印出太多的垃圾信息。
所以说这才是原作者的精辟之处呀。
第三种
这个如果你,仅仅只要更新里面的字符串信息,比如你设置了class类,如果class='自然风光',那么就把image前面加上pic_gather/nature/image。那么没有必要用上面的这么复杂的东西,直接用sql语言就行了,concat()函数就有这样的功能。
作者:wolinxuebin
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
将视频设置为Android手机开机动画的教程
2014-12-11
常用dos命令及语法
2014-09-27
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
火影忍者国际版手游下载v1.71.72.8 安卓最新版本
角色扮演 1.86G
下载绿茵信仰游戏最新版下载v3.8.0 安卓版
体育运动 1.80G
下载奇妙梦幻城堡完整版下载v9.87.00.00 安卓版
其它手游 105.1M
下载labo积木汽车2儿童游戏下载v1.1.422 安卓版
其它手游 131.5M
下载奇妙环游世界宝宝巴士游戏下载v9.87.00.00 安卓版
其它手游 114.2M
下载全民农场游戏下载v1.26.30 安卓正版
经营养成 887.0M
下载哈利波特魔法觉醒网易版下载v1.20.220280 安卓版
其它手游 1.89G
下载宝可梦大集结体验服免费下载v1.2.1.1 安卓手机内测服
其它手游 1.90G
下载宝可梦大集结国服下载v1.2.1.1 官方安卓手机版
下载
问道果盘版本渠道服下载v2.139.0506 安卓客户端
下载
斗破苍穹异火重燃官方腾讯版下载v0.0.0.352 安卓最新版
下载
战舰帝国折扣平台下载v7.1.86 安卓版
下载
宝可梦大集结腾讯版国服下载v1.3.1.1 安卓官方正版
下载
大帝国征服者手游百度版下载v5.670 安卓版
下载
漫威对决最新版下载v1.0.125569 安卓版
下载
雪糕工厂宝宝巴士游戏下载v9.87.13.01 官方安卓版
下载