当url不存在时,CakePHP requestAction捕获错误

时间:2013-03-22 13:10:24

标签: url cakephp exception

当我使用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;
}

1 个答案:

答案 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);