【问题标题】:php script execution for heavy script filephp脚本执行繁重的脚本文件
【发布时间】:2012-07-14 06:31:43
【问题描述】:

我有一个项目,我在名为 codeigniter 的 php 框架中开发。我有一个脚本文件,它为我的客户创建了 30,0000 个 pdf 的 db 记录。问题是我必须分块运行代码。因为它给出了错误,一些时间服务器超时,一些时间内存不同步,我通过更改 php.ini 修复了所有错误,但徒劳无功。因为我仍然必须使用 7000 偏移量的限制来分块制作 pdf。如果我增加限制偏移量,它将无法运行并给我错误。很难坐下多达 30,0000 条记录并在其上生成 pdf。我只希望我在一个单独的块中运行。请给我解决方案。我真的需要它。提前致谢。

【问题讨论】:

  • 尝试从 CLI 运行您的 PHP 脚本?
  • 30k 或 300k 是制作这么多 pdf 的大量资源。您需要随时循环和释放资源。仍然需要几个小时(几天?)
  • 你是如何运行/调用你的脚本的?从浏览器?命令行?
  • 阿德南,我正在从浏览器运行它
  • 好的,这是一个破解/补丁解决方案。让您的脚本在完成块(7000 偏移量)echo '<script>window.location="thispage.php?offset="', $new_offset ,'</script>' 后回显此内容

标签: php apache codeigniter


【解决方案1】:

我建议为此使用单独的 shell 脚本,或者如果您坚持使用 PHP 脚本,请像使用 shell 脚本一样使用它。您可以只“触发并忘记”脚本,因此它会在后台运行,而不会影响其他任何东西,也不会占用您的 Web 应用程序的资源。那将是这样的:

shell_exec('yourscript.sh > /dev/null 2>/dev/null &');

或使用 php 脚本

shell_exec('php yourscript.php > /dev/null 2>/dev/null &');

请注意,在上面,我将 stdout 和 stderr 都重定向到 null。如果你不想要它们,你宁愿将它们重定向到其他地方。

【讨论】:

  • EIS 亲爱的,你能解释一下吗,我该怎么做。
  • @StromMan 您对哪个部分有问题?
  • 亲爱的 EIS,我在我的根目录上创建文件,我复制了你的 mantion 代码行并进行了一些修改 shell_exec('php test.php > /dev/null 2>/dev/null &');但它没有给出任何输出,请帮助我了解它是如何工作的。因为我不知道它会如何工作。提前致谢
  • @StromMan 就像解释的那样,代码将 stdout 和 stderr 输出重定向到 null。如果您想查看该输出,请将其重定向到您想查看的位置。
猜你喜欢
  • 2014-03-02
  • 2015-10-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多