2011-11-05 89 views
2

任何人都可以幫我解決這個無稽之談嗎?PHP讀取文件失敗,但沒有發生錯誤

<?php 
if(!readfile($path)) 
{ 
    $error = error_get_last(); 
    imageError('*'.$error['type'].','.$error['message'].','.$error['file'].','.$error['line'].'*'); // Outputs the error on an image 
    exit; 
} 
?> 

此輸出表示 「,,,」 圖像 - 基本誤差是空的。 我認爲這個問題可能與我試圖在同一時刻讀取同一文件10次的事實有關。我一直是這樣的:

<img src="images/10/seo-friendly.jpg" /> 
<img src="images/10/seo-friendly2.jpg" /> 
<img src="images/10/seo-friendly3.jpg" /> 
<img src="images/10/seo-friendly4.jpg" /> 
<img src="images/10/seo-friendly5.jpg" /> 
<img src="images/10/seo-friendly6.jpg" /> 
<img src="images/10/seo-friendly7.jpg" /> 
<img src="images/10/seo-friendly8.jpg" /> 
<img src="images/10/seo-friendly9.jpg" /> 
<img src="images/10/seo-friendly10.jpg" /> 

然後,我有一個重寫規則在我的.htaccess這樣的:

RewriteRule images/([0-9]+)/.*\.(png|jpg|gif) resize.php?id=$1 [L] 

那麼,什麼情況是,我基本上要求相同的文件10倍,在同時刻。大多數時候它工作正常,但有時我會遇到這個問題(僅適用於10張圖像中的1-3張)。

任何線索真的很感激。

謝謝。

+1

imageError()從哪裏來? –

+0

這是我自己的功能,它的工作正常。 – satoshi

+0

我會將「echo $ path」添加到錯誤處理程序中,以確保您具有實際的路徑。 –

回答

1

問題在於併發性不好。我很明顯是試圖在寫入圖像時讀取圖像(反之亦然)

2

readfile()返回從文件中讀取的字節數。所以,您試圖讀取的文件完全有可能是空的,並且沒有發生錯誤。

如果確實存在錯誤,則可以使用set_error_handler()來捕獲錯誤並根據需要處理錯誤。

+0

你好,喬納森,謝謝你的回答。 我確定該文件不是空的,我編輯了主要問題以包含更多有用的信息。我也嘗試了set_error_handler,我仍然沒有錯誤。 謝謝。 – satoshi