【问题标题】:How to run php script on server through command line如何通过命令行在服务器上运行 php 脚本
【发布时间】:2010-05-25 18:51:13
【问题描述】:

我创建了一个 php 脚本来将 rss 提要导入数据库。必须将巨大的提要(从 2004 年到 2010 年,大约 200 万条记录)插入到数据库中。我一直在浏览器中运行脚本,但它插入的速度(大约每秒 1 次)我怀疑即使我每天 24 小时运行它也需要 20-25 天才能输入这些数据。我试过它同时在不同的浏览器窗口上运行,并且在过去两天只完成了 70000 条记录。如果我同时运行 10-12 个实例,我不确定服务器会如何反应。

我客户端的一位程序员说我可以通过命令行直接在服务器上运行它。谁能告诉我如果我通过命令行运行它会有多大的不同?另外运行它的命令行语法是什么?我在 apache、php/mysql 上。我在网上尝试了一个类似的答案,但它们似乎让我很困惑,因为我不是系统管理员或在 linux 中做得很好,尽管我过去做过像 svn 存储库和在服务器上安装一些 apache 模块这样的任务所以我希望如果有人告诉我该怎么做,我可以做到这一点。

【问题讨论】:

    标签: php mysql command-line rss


    【解决方案1】:

    速度差异:最小。您所节省的只是阻塞 NET I/O 和连接(以及可以忽略不计的 apache 开销)。

    怎么做:

    bash> php -f /path/to/my/php/script.php
    

    你可能只安装了php5-mod 包,它是 php for apache,你可能需要安装实际的命令行解释器,但是很多发行版都安装了这两个。我个人认为您的算法存在效率问题。似乎可以通过缓存和最坏情况性能分析(Big-O 表示法)来加速处理需要几天和几天的事情。

    另外,php vanilla 不是很快,有很多方法可以让它变得非常快,但是如果你正在做大量计算,你应该考虑 c/c++、C#/Mono(也许),可能是 python(可以预编译,实际上可能不会快多少)。

    但强烈建议探索这些其他渠道。

    【讨论】:

      【解决方案2】:

      只提供要执行的文件名就足够了:

      php -f <YourScriptHere.php>
      

      请参阅documentation 以获取more command line options

      【讨论】:

        【解决方案3】:

        要在命令行中运行 php 脚本,只需执行:

        php yourscript.php
        

        如果您想保持此进程在后台运行,请执行以下操作:

        php yourscript.php &
        

        然后您可以同时运行多个进程。要识别当前正在运行的脚本实例,请执行:

        ps aux | grep yourscript.php
        

        但是,如果您认为花费的时间太长,请尝试找出您的代码中是否存在瓶颈并进行优化。

        【讨论】:

          【解决方案4】:

          在 Linux 中:

          php -f file.php
          

          输入

          php --help 
          

          其他选项

          【讨论】:

            【解决方案5】:

            您可能还需要-n 选项(没有php.ini 文件)或选项来指定可以找到php-cli.iniphp.ini 文件的位置。

            【讨论】:

              最近更新 更多