2

在我的笔记本电脑上,我安装了一个网络服务器并编写了一个脚本。通过在任何浏览器中访问脚本http://localhost/test/search.php使其正常运行:它搜索、下载和存储某些推文。

我现在想让脚本每 20 分钟自动运行一次,所以我wgetC:\Program Files\GnuWin32\bin\wget.exe. 然后,我使用以下操作(在“操作”选项卡上填写)创建了一个 Windows 任务:

Program/script:
"C:\Program Files\GnuWin32\bin\wget.exe"

Add arguments (optional): -O - -q -t 1 http://localhost/test/search.php

正如预期的那样,每 20 分钟就会打开一个命令行来运行脚本。然而,什么也没有发生。脚本未初始化。我确信我的所有路径都是正确的。什么可能导致脚本没有被执行?命令行会在几毫秒内消失,所以我看不到它在说什么......

4

3 回答 3

4

您提到了两种途径search.php:一种是 with /test,另一种是 with /ting。确保您在浏览器和 wget 中使用相同的内容。

如果您请求一个不存在的页面,如果您提供-q. -v用or替换它,--verbose看看有什么问题。

c:\gnuwin32\bin\wget.exe -O - --verbose -t 1 http://localhost/test/search.php
--2013-02-25 23:42:03--  http://localhost/test/search.php
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|::1|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-02-25 23:42:03 ERROR 404: Not Found.

当您让命令行工作时,您可以专注于使用任务调度程序运行它。

您可以以自己或任何其他帐户的身份运行任务。UsingLOCAL SERVICE允许您在不提供密码的情况下运行它,即使您已注销。只需确保您选择的帐户具有 wget 所在目录的权限即可。

其他人提到您必须设置计划任务的路径,否则您将获得屏幕截图中显示的操作代码(2)。它还将确保 WIndows 找到wget.exe依赖项,即libeay32.dlllibssl32.dll.

为您的计划任务设置工作目录.

最后,简化。从命令行运行 php。上面的链接是一个带有简单脚本的示例。

编写代码,以便您可以从命令行独立调用 search.php。无需在两者之间放置 HTTP 客户端和 Web 服务器。这里有一堆用于各种 Twitter 相关操作的示例脚本。

于 2013-02-26T05:09:40.247 回答
1

请创建一个 bat 文件,在其中提及所有命令,例如 Broncha 在评论中提到的命令,然后将其添加到 Windows 任务计划程序中。

task1.bat
-----------
cd c:\xampp\htdocs\test
php search.php
于 2013-02-17T17:28:58.987 回答
1

您应该从命令行测试您的脚本以了解它是否正常工作。只需运行它cmd来检查

"C:\Program Files\GnuWin32\bin\wget.exe" -O - -q -t 1 http://localhost/test/search.php

任务调度程序有很多设置选项卡,检查历史选项卡以查看计划任务历史记录,您可以在其中检查最后几个运行时的退出代码。在历史中寻找这样的事件:

事件 ID:201 任务类别:操作已完成

检查其退出代码action "C:\Program Files (x86)\GnuWin32\bin\wget.exe" with return code x。如果它为零,那么它正在工作,任何其他整数都意味着错误。

请告诉您使用的是哪些窗口?还要发布上面提到的命令的输出,以便我可以确切地知道任务计划程序中的错误是什么。

于 2013-02-25T19:54:02.030 回答