PHP-如何抑制错误日志文件中的单个警告?
我的脚本从网站上抓取数据。每当该网站不可用时,我会在我的错误日志文件中出现如下错误: [03-Jun-2017 15:00:03 UTC]PHP警告:文件() 无法打开流:HTTP请求失败!HTTP/1.1503服务 不可用 有一个警告,但我只想抑制个别警告-因为我希望我的脚本中的任何其他警告仍然被记录 那么,是否可以抑制单个行的警告 我已经尝试过在try/catch块中包围给出警告的代码行,即PHP-如何抑制错误日志文件中的单个警告?,php,Php,我的脚本从网站上抓取数据。每当该网站不可用时,我会在我的错误日志文件中出现如下错误: [03-Jun-2017 15:00:03 UTC]PHP警告:文件() 无法打开流:HTTP请求失败!HTTP/1.1503服务 不可用 有一个警告,但我只想抑制个别警告-因为我希望我的脚本中的任何其他警告仍然被记录 那么,是否可以抑制单个行的警告 我已经尝试过在try/catch块中包围给出警告的代码行,即 try { $lines = file("https://example.com"); //
try {
$lines = file("https://example.com"); // This line results in a warning in my error_log file if the web page is currently unavailable
}
catch(Exception $e) {
}
但我还是得到了警告。有人有其他想法吗?几乎在所有情况下,抑制错误都是胡说八道。一个合适的解决方案是检查返回的HTTP状态码,并且仅当它是有效的时才使用它上面的文件 例如(未测试,3v4l不支持cURL):
看起来您可以在脚本中切换错误报告状态:
error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://111111asegfiwaehflewakfhewaflk.err"); // Warning logged
error_reporting(E_ERROR | E_PARSE); // Don't report warnings
$lines = file("https://222222asegfiwaehflewakfhewaflk.err"); // Warning NOT logged
error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://333333asegfiwaehflewakfhewaflk.err"); // Warning logged
是一种更好的方法,但我会在回答原始问题时发布此答案。尝试使用此方法:error\u reporting(E\u error | E\u PARSE)代码>其原因是警告不是异常=>您无法捕获它。我建议在生产中关闭警告…谢谢,但这不会抑制所有其他警告(我想保留)?是的,下一个讨厌的选项是:@file(“https://example.com");代码>如果我移动了$lines=文件(“https://example.com");将代码>行代码添加到单独的php文件中,然后仅在该文件中设置错误报告(…)
。这样行吗?我会使用@operator,然后检查$line
中是否有任何内容,谢谢。是否可以在不发出额外请求的情况下检查HTTP状态代码?@ban geoengineering Yes-停止使用file()处理url及其响应,并使用curl获取响应。谢谢,但即使我添加curl\u setopt($handle,CURLOPT\u NOBODY,true)
对于您的代码,我仍在发出两个请求-一个是通过cURL,另一个是通过文件($domain)
。是否可以通过单个调用执行检查和(如果代码为200)检索?@ban geoengineering是的,正如我所说的-完全停止使用文件()
-使用$response=curl\u exec($handle)
,并正确解析输出。您是否可以相应地更新代码,因为它目前似乎正在同时使用这两种方法?
error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://111111asegfiwaehflewakfhewaflk.err"); // Warning logged
error_reporting(E_ERROR | E_PARSE); // Don't report warnings
$lines = file("https://222222asegfiwaehflewakfhewaflk.err"); // Warning NOT logged
error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://333333asegfiwaehflewakfhewaflk.err"); // Warning logged