2012-09-26 132 views
0

我想運行文件後,代碼使用的file_get_contents()創建。現在,當我調用代碼中使用使用simplexml_load_file加載XML文件(),它什麼也不做,因爲該文件需要時間來加載和使用的file_get_contents文件夾中保存()。如何在文件夾中創建文件後在php中運行代碼?

,如果我得到任何方式的代碼會在文件夾中創建文件後剛工作的話,我覺得這份工作將完成。這裏是我想要運行的代碼

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--> 

但是這段代碼什麼都不做,因爲當時的文件沒有完全加載。

+0

'cache/cache_file.xml'如何保存?是一個PHP外部的進程保存它? – Nelson

+0

是通過另一個php腳本保存的,我通過ajax調用它顯示xml數據。我必須使用有file_get_content(「緩存/ cache.xml」,內容) ,但它需要時間來加載,直到後來我上面的代碼通過文件來加載XML不工作,因爲文件不存在,直到那個時候 –

+0

正常,檢查我的答案 – Nelson

回答

0

功能file_exists()想要的絕對路徑,你傳遞一個相對,使用DOCUMENT_ROOT提供了前者。除此之外,您可以在一秒鐘內檢查一次文件,並最大限度地等待,如下所示:

$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; 
    ... 
    ... 
+0

它顯示我的錯誤:60秒的最長執行時間超過 –

+0

是的,它有一個錯誤,我固定它,請查看我更新的答案。另外請記住,你沒有檢查正確的文件,所以也許問題只是這個。 – Nelson

+0

不,我正在尋找正確的文件。它沒有顯示分頁,因爲該文件沒有按時加載,並且simplexml_load_function()開始加載文件。如果我在加載完整結果後刷新頁面,則顯示分頁開始 –

相關問題