0

当我使用 requestAction($url); 时,当我的应用程序中不存在请求的 url 时,我尝试捕获错误;使用 try-catch 块,继续加载请求的错误 url;

请告诉我是否有其他解决方案来测试 url 是否存在,或者文件是否存在于 cakephp 目录中(我的 url 可以由插件名称组成)。

我的实际代码:

$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;
}
4

1 回答 1

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);
}

编辑

确保将函数放在库或引导程序中以供访问。不要像那样把它粘在你的控制器里:)

另一个编辑

<?php 
$ch = curl_init('http://yoururl/'); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
$c = curl_exec($ch); 
echo curl_getinfo($ch, CURLINFO_HTTP_CODE);
于 2013-03-22T13:46:27.970 回答