当我使用requestAction($ url)时,当我的应用程序中不存在请求的url时,我尝试捕获错误; 使用try-catch块,继续加载请求的错误URL;
请告诉我是否有其他解决方案来测试网址是否存在,或者文件是否存在于cakephp目录中(我的网址可以由插件名称组成)。
我的实际代码:
$url = $appliUrl . $cron['Cron']['plugin'] . '/'. $cron['Cron']['controller'] . '/' . $cron['Cron']['action'];
if (!empty($cron['Cron']['params'])) {
$params = explode(',', $cron['Cron']['params']);
foreach ($params as $param)
$url .= '/' . $param;
}
try{
$output = $this->requestAction($url);
}catch (Exception $e){
$output = "error in the url : ".$url;
}
答案 0 :(得分:1)
您可以使用多种方法来完成此任务。在此示例中,使用cURL。
function url_exists($url) {
if (!$fp = curl_init($url)) return false;
return true;
}
然后你可以将$ output包装在if块中检查url。
if (url_exists($url)) {
$output = $this->requestAction($url);
}
修改的
确保将该函数放在lib或bootstrap中以便访问。不要只是把它粘在你的控制器上:))
另一个编辑
<?php
$ch = curl_init('http://yoururl/');
curl_setopt($ch, CURLOPT_NOBODY, 1);
$c = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE);