我在 Windows Vista 上运行 XAMPP。XAMPP 是大约一年前安装的,所有选项均为默认选项。
我用 PHP 编写了一个脚本,该脚本将执行网络爬取并将数据放入 mysql 中。我将其放入set_time_limit(36000)
PHP 源代码中,这样脚本就不会超时。但是,由于我通过将浏览器定向到 PHP 文件来启动脚本,因此浏览器(Chrome 和 Firefox)似乎超时;然后脚本停止(即脚本运行良好约一分钟然后停止)。
问题:
- 我不明白是否可以用我当前的配置从命令行运行 php。在 cmd 提示符中,我输入:
php -v
并得到'php' is not recognized as an internal or external command
。 - 如果问题 1 为真,我该如何从命令提示符运行 PHP?否则,我还能做什么不会导致超时?
答案1
- 您尚未将 PHP 添加到
PATH
Windows 中的环境变量中。请参阅PHP 文档有关在 Windows 上从命令行运行 PHP 的一般说明。基本上,如果您想从命令行使用 PHP,您需要将包含 PHP 可执行文件的目录(可能适合C:\xampp\php
您的情况)添加到PATH
变量中。请查看本指南有关如何更改变量的说明PATH
。 - 目前,您应该能够通过键入从命令提示符运行 PHP
C:\xampp\php\php.exe
,但是一旦您按照上面的步骤 1 正确设置了PATH
变量,您应该能够简单地php
在命令提示符下键入。
要解决从浏览器运行脚本时 PHP 超时的问题,这不太可能是由浏览器引起的。有两个单独的php.ini
配置文件;一个适用于 PHP 的命令行实例,另一个适用于 Apache 使用的 PHP 实例,因此请确保您更改了正确的文件。另一件要记住的事情是,必须重新启动 Apache 才能使配置更改生效;最好的办法是重新启动整个堆栈。
最后,你使用 XAMMP 而不是 WAMP 有什么特别的原因吗?除非你使用 Perl 编程语言,否则我建议你下载WAMP 安装程序,它是完全集成的,将为您设置所有必需的环境变量,并附带强大的社区支持。
编辑:我刚刚注意到您实际上并没有提到更改php.ini
文件中的任何设置,所以我认为这可能是您的超时问题。在您的php.ini
文件中,您会发现一个以秒为单位指定的设置max_execution_time
。将其更改为您认为更准确地允许您的脚本完成处理的值,例如,将其设置为max_execution_time = 300
允许您的脚本在超时前最多运行 5 分钟。再次提醒,请记住在进行此更改后重新启动 Apache。
需要说明的是,使用从浏览器调用的 PHP 脚本执行任何类型的 Web 爬取都是一个糟糕的想法。您最好将其作为控制台应用程序运行。
答案2
您应该能够从命令提示符运行 php。您需要在 XAMPP 安装文件夹中导航到其所在位置php.exe
,或者将该目录添加到 PATH 环境变量中。
我有一个旧的 WAMP 安装,并在以下位置找到它C:\wamp\bin\php\php5.3.0\php.exe
:
C:\wamp\bin\php\php5.3.0>php.exe -v
PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies