2013-02-11 104 views
0

我需要将大型Excel表格解析到我的数据库中。我正在使用PHPExcel。这些文件太大,无法一次导入它们,我必须处理最大执行时间和内存限制。用cron运行一个很长的PHP任务,没有AJAX

所以现在系统以这种方式工作:操作员上传浏览器中的文件,然后导入脚本运行很多次,直到整个文件被解析。 PHP脚本只导入excel文件的一部分,并返回一个值。如果还有一些未分析的行 - 脚本将再次通过AJAX运行。

现在我想将此任务移至cron,但我不知道该如何执行,因为我不知道脚本需要执行多少次才能完成任务。

是否有某种方式一次又一次地执行脚本,直到它完成,但没有用它在浏览器中处理(通过AJAX,重装等)

+0

我不确定cron是否适合这类任务。 – MarcDefiant 2013-02-11 10:13:35

+1

使用cron作业,max_execution_time应该没有问题,原因是默认情况下不受限制 – m4t1t0 2013-02-11 10:14:47

回答

0

EXEC手动()不会做你在找什么。您可以克服一个记忆和寿命限制设置

memory_limit = -1 
max_execution_time = 0 

但高管的时间是无限的CLI PHP反正 - 如提及。

我会把你所有上传的文件放到某个工作目录下,并且每分钟都会有一个cron脚本来处理未处理的文件(一次,或Ntime,但不应该需要......)。 Cron PHP脚本可以在文件完成时触及文件(如果你有多个进程,它开始处理文件),以便知道哪些文件已完成(或正在被其他进程使用)。 AJAX端点可以测试该标志文件或类似的存在以通知客户端。

0

为什么不让工作运行每x分钟持续,有这样的事情:

Check if there are any files neededing parsed 
If NO 
    exit 
else 
    Parse X number of rows from where we left off, 
    keeping track of where we are upto. 

该脚本将只是高兴地在后台运行,检查是否有什么关系,如果没有它会刚刚退出。