PHP readfile не работает, но не выдает ошибку - PullRequest
2 голосов
/ 06 ноября 2011

Может кто-нибудь помочь мне с этой бессмысленной проблемой?

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

Итак, что происходит, я в основном запрашиваю тот же файлраз в тот же момент.В большинстве случаев это работает должным образом, но иногда я получаю эту проблему (только для 1-3 из 10 изображений).

Любая подсказка действительно приветствуется.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2011

readfile() возвращает количество байтов, прочитанных из файла.Таким образом, вполне возможно, что файл, который вы пытаетесь прочитать, является пустым и не возникло никаких ошибок.

Если действительно есть ошибка, вы можете использовать set_error_handler(), чтобы зафиксировать ошибку и обработать ее по своему усмотрению.

1 голос
/ 13 февраля 2012

Проблема была из-за плохого параллелизма.Я явно пытался прочитать изображение, когда писал на нем (или наоборот)

...