从shell或Apache服务器运行PHP脚本

3
我想知道能否通过shell命令行执行PHP脚本。
从shell执行的脚本是否具有与从浏览器执行相同的功能?或者在编码方面是否存在差异。
对于性能来说,从shell运行脚本是否更好?从Windows还是Unix / Linux运行是否更好?
我之所以问所有这些问题,是因为我需要开发一个PHP脚本,该脚本可以从MySQL数据库中列出的某些URL的http标头获取一些数据,然后将数据存储在数据库中。
请问你们可以给我指正方向吗?我需要Ubuntu吗?还是有一个可以从Windows运行php的Shell?目前我安装了WAMP,其中包括mysql、php和apache服务器。
很抱歉我是个新手。
谢谢您的帮助。
4个回答

3
我想知道是否可以在命令行中执行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上运行是否更佳?

并没有太大关系。对于您的用例,您实际上不需要Web服务器和完整功能的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脚本。

可以。

如果从shell中执行脚本,它的功能是否与在浏览器中执行时相同?或者编码上有区别吗。

它不会有$_REQUEST等参数,$_SERVER中也不会包含服务器信息。

从性能上来看,从shell运行脚本是否更好?

可能。这可以避免运行web服务器的开销。它还可以停止您在内存中缓存版本以进行更快的重新执行。

同时,从Windows还是Unix/Linux运行脚本更好?

进行基准测试。

我之所以问所有这些问题,是因为我需要开发一个PHP脚本,该脚本可以从MySQL数据库中列出的一些URL的http头中提取一些数据,然后将数据存储在数据库中。

似乎没有必要涉及Web服务器。

你们能指点我正确的方向吗?我需要Ubuntu吗?还是有可以从Windows运行php的Shell?

标准的Windows shell可以。

目前我只安装了WAMP,其中包括mysql,php和apache服务器。

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


当您从命令行执行脚本时,$_SERVER 中会有值。 - MarcDefiant

1

是的,PHP可以在命令行中运行

不,编码方面没有任何区别。

唯一的区别是,运行脚本的不是Apache,而是当前登录用户。这可能意味着在某些映射和文件夹上具有不同的特权。


1

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

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

主要区别在于它不通过Apache运行,因此您将没有依赖它的东西(例如一些$_SERVER数据)。
此外,在命令行上,它不会受到超时的限制,除非您设置了PHP限制。
请查看http://php.net/manual/en/features.commandline.php以获取更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接