如何在作业完成时安排 PHP 脚本(通过 CLI)
我正在使用 PHP 处理一个大的 .gz 文件(将数据从 gz 传输到 mysql) 每个 .gz 文件大约需要 10 分钟。 我有很多 .gz 文件需要处理。
PHP 处理完一个文件后,我必须手动更改 PHP 脚本以选择另一个 .gz 文件,然后再次手动运行该脚本。
我希望它自动运行下一个作业来处理下一个文件。 gz 文件被命名为 1, 2 ,3, 4, 5 ... 我可以简单地创建一个像这样的循环(处理文件 1 - 5):
for ($i = 1 ; $i >= 5; $i++)
{
$file = gzfile($i.'.gz')
...gz content processing...
}
但是,由于 gz 文件非常大,我不能这样做,因为如果我使用这个循环,PHP 将运行多个大 gz 文件作为单个文件脚本作业。 (占用大量内存)
我想做的是 PHP 完成一项工作后,我想要一项新工作来处理下一个文件。
也许会是这样的:
$file = gzfile($_GET['filename'].'.gz')
...gz content processing...
谢谢
I am processing a big .gz file using PHP (transfering data from gz to mysql)
it takes about 10 minutes per .gz file.
I have a lot of .gz file to be processed.
After PHP is finished with one file I have to manually change the PHP script to select another .gz file and then run the script again manually.
I want it to be automatically run the next job to process the next file.
the gz file is named as 1, 2 ,3, 4, 5 ...
I can simply make a loop to be something like this ( process file 1 - 5):
for ($i = 1 ; $i >= 5; $i++)
{
$file = gzfile($i.'.gz')
...gz content processing...
}
However, since the gz file is really big, I cannot do that, because if I use this loop, PHP will run multiple big gz files as single script job. (takes a lot of memory)
What I want to do is after PHP is finished with one job I want a new job to process the next file.
maybe its going to be something like this:
$file = gzfile($_GET['filename'].'.gz')
...gz content processing...
Thank You
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您在处理后清理并使用
unset()
释放所有内存,则只需将整个脚本包装在foreach (glob(...) as $filename)
环形。像这样:If you clean up after processing and free all memory using
unset()
, you could simply wrap the whole script in aforeach (glob(...) as $filename)
loop. Like this:你应该做的是
What you should do is
您应该从 shell 脚本调用带参数的 PHP 脚本。这是如何在 PHP 中使用命令行参数的文档 http://php.net/manual /en/features.commandline.php
或者,我现在无法尝试,但您可以在处理 gzip 后给 unset($file) 一个机会。
You should call the PHP script with argument, from a shell script. Here's the doc how to use command-line parameters in PHP http://php.net/manual/en/features.commandline.php
Or, I can't try it now, but you may give a chance to unset($file) after processing the gzip.