0

requestAction($ url);を使用すると、要求されたURLがアプリケーションに存在しない場合に、エラーをキャッチしようとします。try-catchブロックを使用すると、要求された間違いのURLが引き続き読み込まれます。

URLが存在するかどうか、またはファイルがcakephp dirに存在するかどうかをテストする他の解決策があるかどうかを教えてください(私の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;
}

次に、URLをチェックするifブロックで$outputをラップできます。

if (url_exists($url)) {
   $output = $this->requestAction($url);
}

編集

アクセスのために、関数をlibまたはブートストラップに配置してください。そのようにコントローラーに貼り付けないでください:)

別の編集

<?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 に答える