1

file_get_contents() を使用してファイルを作成した後にコードを実行したい。今、simplexml_load_file() を使用して xml ファイルをロードするコードを呼び出しても、file_get_contents() を使用してファイルをロードしてフォルダーに保存するのに時間がかかるため、何もしません。

フォルダーにファイルが作成された直後にコードが機能する方法があれば、この仕事は完了すると思います。ここに私が実行したい私のコードがあります

 if(file_exists("cache/cache_file.xml")){
$offerxml = simplexml_load_file("cache/cache_file.xml");
$hotel = $offerxml->offer;

$resultpage = count($hotel) / 10;
?>
<div class="pagination_btn_cont">
<?php for($btn=1;$btn<=$resultpage;$btn++){?>
<div class="pagination_btn"><?php echo $btn;?></div>
<?php } ?>
</div><!--pagination_btn_cont ends--> 
<?php } ?>
</div><!--search_result_cont ends here-->

しかし、その時点でファイルが完全にロードされていないため、このコードは何もしません。

4

1 に答える 1

0

関数file_exists()は絶対パスを必要とし、相対パスを渡します。DOCUMENT_ROOT を使用して前者を提供します。さらに、次のように最大待機時間で 1 秒に 1 回ファイルをチェックできます。

$wait = 8; //maximum wait set to 8 seconds
while(!file_exists($_SERVER['DOCUMENT_ROOT'] ."cache/cache_file.xml") && $wait){
    sleep(1);
    $wait--;
}

if(file_exists($_SERVER['DOCUMENT_ROOT'] . "cache/cache_file.xml")){
    $offerxml = simplexml_load_file("cache/cache_file.xml");
    $hotel = $offerxml->offer;
    ...
    ...
于 2012-09-26T07:51:03.817 に答える