我一直在搜索PHP批处理教程,但到目前为止还没有。
我接到了从MS Excel导入数据的任务。对于每个excel数据,将由PHP处理以创建mysql行。
由于1excel数据的复杂性,我想建立一个批处理系统,其中PHP一次处理一行,显示一些进度条。然后防止超时(设置为60秒)。
对此有什么指导原则/例子/等等吗?谢谢
发布于 2013-02-12 11:48:28
为了防止超时,你必须把set_time_limit(0);放在代码的第一位,如果你想让浏览器不超时,你必须回显一些数据并刷新浏览器
发布于 2013-02-12 11:47:23
通常,对于CSV,我会使用fgetcsv - http://php.net/manual/es/function.fgetcsv.php -它可以让你一次做一行。
对于进度条,您可以为处理的每一行和来自浏览器的AJAX请求更新一个JSON文件,以读取该文件并使用javascript在前端显示客户端的进度条。
发布于 2013-02-12 14:41:19
我不太清楚你想要什么,但我会试一试。据我所知,您希望在PHP程序运行时使用批处理文件来刺激进度条。
首先,你需要知道你需要多少个细胞来做任何你想做的事情。只要这是可能的(并且它可以将数字导出到文本文件),那么它应该是可能的。
下面的方法将需要一个.txt文件,当它包含需要处理的单元格数量时(如果不能,您可能应该跳过整个答案)。然后,它将扫描包含已经处理的单元格数量的不同文本文件(最好是文件中唯一的内容,否则可能会变得很麻烦)。
了解我和我在思考生活方式之前的谈话,这个答案可能永远不会提交,因为我是一个笨蛋,高估了我能完成的事情。
所以,不用再多说了.
@echo off & setlocal enabledelayedexpansion
for /f %%i in (file1) do set num1=%%i
set /a num1*=100
:update
if not exist file2 goto update
for /f %%i in (file2) do (
if %%i equ %prog% goto update
set prog=%%i
)
set /a prog*=100
set /a stat=%prog%/%num1%
cls
echo %stat% % done.
goto update嗯,结果比我预期的要好。这个答案可能刚刚发布。我应该注意的一件事是,您需要用适当文件的文件路径替换file1和file2 (有两次)。file1应该包含所需的细胞数量,无论上面的内容是什么。file2应该具有已处理的更新单元格数量。
不幸的是,我没有对此进行测试,我确信会有错误或可以改进的地方。它被制作成一个模板,并激发了一些其他想法,而不是硬拷贝。
https://stackoverflow.com/questions/14825016
复制相似问题