【问题标题】:Run PHP script from shell or apache server从 shell 或 apache 服务器运行 PHP 脚本
【发布时间】:2013-01-26 08:58:31
【问题描述】:

我想知道是否可以从 shell 命令行执行 PHP 脚本。

如果从浏览器执行,从 shell 执行的脚本是否具有确切的功能?还是编码有区别。

从 shell 运行脚本以获得性能更好,还是从 windows 或 unix/linux 运行它更好

我问所有这些问题是因为,我想开发一个 PHP 脚本,它可以从 MySQL db 中列出的某些 url 的 http 标头中获取一些数据,然后将数据存储在数据库中。

你们能给我指出正确的方向吗,我需要ubuntu,还是有可以从windows运行php的shell?我现在安装的只有 WAMP,它有 mysql、php 和 apache 服务器。

我很抱歉成为新手。

感谢您的热心帮助

【问题讨论】:

    标签: php mysql apache shell


    【解决方案1】:

    我想知道是否可以从 shell 命令行执行 PHP 脚本。

    是的

    如果从浏览器执行,从 shell 执行的脚本是否具有确切的功能?还是编码有区别。

    它不会包含$_REQUEST 和朋友,并且$_SERVER 中不会有服务器 信息。

    从 shell 运行脚本以获得性能是否更好

    也许吧。它避免了运行网络服务器的开销。它会阻止您在内存中缓存版本以便更快地重新执行。

    从 windows 或 unix/linux 运行它更好

    对其进行基准测试。

    我问所有这些问题是因为,我想开发一个 PHP 脚本,它可以从 MySQL db 中列出的某些 url 的 http 标头中获取一些数据,然后将数据存储在数据库中。

    似乎不需要为此使用网络服务器。

    请你们指点我正确的方向,我需要ubuntu,还是有可以从windows运行php的shell?

    标准的 Windows shell 可以。

    我现在安装的只有 WAMP,它有 mysql、php 和 apache 服务器。

    您需要 PHP 的命令行版本。我不知道 WAMP 是否包含它。

    【讨论】:

    • 当您从命令行执行脚本时,$_SERVER 中有值。
    【解决方案2】:

    我想知道是否可以从 shell 命令行执行 PHP 脚本。

    可以通过执行:

    $ php -f your_script.php
    

    或者通过将#/usr/bin/env php 插入脚本的第一行并使其可执行。

    $ head -n 1 your_sript.php
    #/usr/bin/env php
    $ chmod +x your_script.php
    $ ./your_script.php
    

    注意:此示例仅适用于 UNIX 系统。

    如果从浏览器执行,从 shell 执行的脚本是否具有确切的功能?还是编码有区别。

    您可以使用相同的语法/函数等。唯一的区别是$argv 中有命令行参数,$_SERVER 变量中有一些其他值。

    从 shell 运行脚本以提高性能是否更好,从 windows 或 unix/linux 运行是否更好。

    这并不重要。对于您的用例,您实际上并不需要网络服务器和功能齐全的 GUI。拥有命令行工具的好处是,您可以将您的程序与其他可用的程序(如 grep 等)结合起来。

    请你们指点我正确的方向,我需要ubuntu,还是有可以从windows运行php的shell?

    你不需要ubuntu,你也可以从windows执行一个shell脚本。 PHP 可执行文件位于%PATH%。这个问题将帮助您做到这一点:https://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and-how-can-i-set-or-use-them

    然后只需打开cmd.exe 并使用php -f your_script.php 执行脚本

    【讨论】:

      【解决方案3】:

      是的,PHP can be run from command line

      不,编码没有任何差异。

      唯一的区别是运行脚本的不是 Apache,而是您当前登录的用户。这可能意味着某些地图和文件夹的不同权限。

      【讨论】:

        【解决方案4】:

        是的,您可以使用以下命令从命令行执行 PHP:

        /path/to/php.exe /path/to/script.php
        

        主要区别在于它不通过 Apache 运行,所以你不会有依赖它的东西(比如一些 $_SERVER 数据)。

        此外,它不会受到命令行超时的影响,除非您设置了 PHP 限制。

        查看http://php.net/manual/en/features.commandline.php 了解更多信息。

        【讨论】:

          猜你喜欢
          • 2017-03-22
          • 1970-01-01
          • 2014-01-01
          • 2018-08-04
          • 1970-01-01
          • 2012-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多