В PHP, как я могу проверить, является ли ресурс потока (или указатель файла, дескриптор или что-то, что вы хотите назвать), можно читать или записывать? Например, если вы столкнулись с ситуацией, когда вы ничего не знаете о том, как был открыт или создан ресурс, как вы проверяете, является ли он доступным для чтения? И как вы проверяете, доступна ли запись?
Основываясь на тестировании, которое я сделал (только с обычными текстовыми файлами с использованием PHP 5.3.3), fread()
не бросает любые ошибки на любом уровне, когда ресурс не читается. Он просто возвращает пустую строку, но также делает это для пустого файла. И в идеале было бы лучше иметь чек, который не будет изменять сам ресурс. Тестирование, если ресурс читается, пытаясь прочитать его, изменит положение указателя.
И наоборот, fwrite()
не выдает никаких ошибок на любом уровне, когда ресурс недоступен для записи. Он просто возвращает ноль. Это немного более полезно, потому что если вы пытались записать определенное количество байтов в файл и fwrite()
возвращает ноль, вы знаете, что что-то пошло не так. Но тем не менее, это не идеальный метод, потому что было бы гораздо лучше узнать, можно ли его записывать, прежде чем мне нужно будет писать, а не пытаться написать ему и посмотреть, не сработает ли он.
Кроме того, в идеале проверка должна работать на любом ресурсе потока, а не только на файлах.
Возможно ли это? Есть ли что-нибудь подобное? Я не смог найти ничего полезного. Заранее благодарю за ваши ответы.