在终端中查看 php 脚本执行
Posted
技术标签:
【中文标题】在终端中查看 php 脚本执行【英文标题】:see php script execution in terminal 【发布时间】:2012-06-10 12:28:15 【问题描述】:我正在编写一个可能需要半天时间的脚本,因为它从一个网站的大约 14000 个网页中获取数据。
要知道它是否有进展,有什么方法可以观察它的执行情况,即使用 mac os shell 到每个抓取页面的传出连接?
如果有帮助的话,我正在使用 curl 获取页面内容。
非常感谢! 查尔斯
编辑 该脚本是用 php 编写并从 localhost 执行的。
【问题讨论】:
嗯,这不会是针对...bandliste.de,是吗?我希望此活动得到您正在执行此操作的网站的批准。 @JaredFarrish 谢谢你的帮助 如果你经营一个网站,你有很多信息,如果有人突然点击它并试图下载整个网站,而你不知道它是谁或他们是谁,你会高兴吗取决于?还是突然发现它在别处复制? 当然,您在这项工作中最大的问题可能是您选择使用 PHP 来完成它。无论如何,this answer 可能会指出一些有用的东西。 @JaredFarrish 谢谢!这很有用。 【参考方案1】:在编写自定义脚本时,将某种状态输出到标准输出非常有帮助。
这可以使用printf
http://www.php.net/manual/en/function.sprintf.php以统一的方式完成
您记录到标准输出的内容取决于您需要查看的信息。也许对于 curl 请求,我会记录 Url、响应代码,也许是开始时间和结束时间。这完全取决于您,只需确保您可以验证它的状态/进度。
printf('%40s | %5s', 'URL', 'Status Code');
printf('%40s | %5s', $the_url, $status_code);
【讨论】:
谢谢 - 这会导致脚本需要相当长的时间来执行吗? 需要更长的时间,是的,多长时间对于它提供的信息的价值来说可能可以忽略不计。问题是,如果您正在抓取 140,000 个 url,最好知道发生了什么并有一个日志,无论您将此输出保存到文件> output.txt
还是检查您的数据库中是否有已完成的链接,这都很好了解进展顺利和失败的情况。您也可以设置curl_setopt($session, CURLOPT_VERBOSE, true); // Display communication with server
,但我不知道该信息是否对您有用。【参考方案2】:
如果您通过 Web 浏览器运行此程序,则在 PHP 完成执行之前不会看到输出。但是,file_put_contents()
可以将数据附加到您可以查看的日志文件中。
示例代码行是:file_put_contents("file name.txt", "\nWebsite abc was successfully scraped", FILE_APPEND);
。您必须有 FILE_APPEND 标志,否则 PHP 每次都会覆盖该文件。
php.net Reference
【讨论】:
@ScrottS 非常感谢!以上是关于在终端中查看 php 脚本执行的主要内容,如果未能解决你的问题,请参考以下文章