我一直在搜索 PHP 批处理教程,但到目前为止还没有。
我的任务是从 MS Excel 导入数据。对于每个 excel 数据,将由 PHP 处理以创建 mysql 行。
由于 1 excel 数据的复杂性,我想构建一个批处理系统,其中 PHP 一次处理 1 行,显示一些进度条。然后防止超时(设置为 60 秒)。
对此有任何指导方针/示例/等吗?谢谢
我一直在搜索 PHP 批处理教程,但到目前为止还没有。
我的任务是从 MS Excel 导入数据。对于每个 excel 数据,将由 PHP 处理以创建 mysql 行。
由于 1 excel 数据的复杂性,我想构建一个批处理系统,其中 PHP 一次处理 1 行,显示一些进度条。然后防止超时(设置为 60 秒)。
对此有任何指导方针/示例/等吗?谢谢
通常对于 CSV,我会使用fgetcsv
- http://php.net/manual/es/function.fgetcsv.php - 它可以让你一次做一行。
对于进度条,您可以为处理的每一行和来自浏览器的AJAX请求更新一个JSON文件,以读取该文件并使用 javascript 在前端显示客户端的进度条。
为了防止超时,您必须设置set_time_limit(0); 如果您希望浏览器不超时,首先是代码,您必须回显一些数据并刷新浏览器
我不确定你想要什么,但我会试一试。据我了解,您需要一个批处理文件来在您的 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
and file2
(出现两次)替换为相应文件的文件路径。file1 应该包含你需要做的任何事情的单元格数量。file2 应该具有您已处理的更新数量的单元格。
不幸的是,我没有对此进行测试,并且我确信会出现错误或可以进行某种改进。它被制作为模板并激发其他想法,而不是硬拷贝。