2017-11-08 6 views
1

私は週に1回実行されるcronジョブを持っています。新しいデータを含むかもしれないアップデートや新しいグラフィックスを含むリモートサイトをチェックします。cronジョブからローカルフォルダにグラフィックを保存する

ローカルフォルダを確認してグラフィックが既に存在するかどうかを確認し、存在しない場合はそのグラフィックのローカルコピーを保存します。

私のコードはブラウザから実行するとうまくいくようですが、毎週フォルダをチェックすると、空のグラフィックファイルがたくさんあります。

これらは、正しいファイル名ですが、すべてゼロバイトです。

cronジョブが実行されるPHPファイル内の私のコードはこれです:

if (!file_exists($graphic)) { 
    $imageString = file_get_contents($graphicurl); 
    file_put_contents($graphic, $imageString); 
} 

$グラフィックは "filename.jpg"

の$ graphicurlは "https://remotegraphicfile.jpg"

のようなものになりますようになります

そして、私のローカルフォルダには "filename.jpg"のようなファイルがたくさんありますが、ファイルサイズはゼロです。

cronジョブで呼び出されたときにこの動作が無効になる理由はありますか?

私は今から私の元のコードを変更することで、この作業を取得するために管理している
+0

地元のことはどういう意味ですか?ローカルのマシンまたはローカルのサーバー。 – GYaN

+0

ローカルサーバー。スクリプトはAPIをチェックして、さまざまなデータをローカルのmysqlデータベースに保存し、グラフィックスをローカルサーバーに保存します。 – Richard

+0

ほとんどの理由は、 '$ graphicurl'パラメータの指定されたURLにイメージが存在しないことが考えられます。壊れたリンクではサーバは '404 Not Found'エラーを返し、0バイトがディスクに書き込まれます。 –

答えて

0

:これに

if (!file_exists($graphic)) { 
    $imageString = file_get_contents($graphicurl); 
    file_put_contents($graphic, $imageString); 
} 

if (!file_exists($graphic)) { 
    $file = fopen ($graphic, 'w'); 
    $c = curl_init($graphicurl); 
    curl_setopt($c, CURLOPT_FILE, $file); 
    curl_exec($c); 
    curl_close($c); 
    fclose($file); 
} 

これが機能するようになりました、そして実行するとき、グラフィックスが私のフォルダに保存しますcronジョブ。

関連する問題