这在很大程度上取决于您是如何编写它的,它是否不会泄漏打开的文件或数据库连接。它还取决于您使用的 php 版本。在 php 5.3 中,为解决垃圾收集问题做了很多工作:
http://www.php.net/manual/en/features.gc.performance-considerations.php
如果操作是事务性的并不重要,即全有或全无(例如,如果它在中途失败),那么我很想分块解决这个问题,每次运行脚本处理下一个 x 项,其中 x 可以是一个变量,取决于它需要多长时间。所以你需要做的是继续重复脚本,直到什么都不做。
为此,我建议使用名为 Fat Controller 的工具:
http://fat-controller.sourceforge.net
它可以继续重复脚本,然后在一切完成后停止。您可以告诉 Fat Controller 还有更多工作要做,或者使用 php 脚本的退出状态完成所有操作。Fat Controller 网站上有一些用例,例如: http: //fat-controller.sourceforge.net/use-cases.html#generating-newsletters
您还可以使用 Fat Controller 并行运行进程以加快速度,但请注意不要并行运行太多并减慢速度。如果您正在写入数据库,那么最终您将受到硬盘的限制,除非您有一些花哨的东西,否则您的最佳并发性将是 1。
最后一个问题是如何触发它——你最好从 CRON 触发 Fat Controller。
Fat Controller 网站上有大量文档和示例,但如果您需要任何具体指导,我很乐意提供帮助。