PHP: Writeable Connection
Код:
fopen('path/to/file.txt', 'a')
а вответ получаю
... failed to open stream: HTTP wrapper does not support writeable connections...
Как с этим бороться? Использую Денвер.
Спасибо!
$file = fopen('http://127.0.0.1/index.php','r');
echo $str = fread($file,1024);
fclose($file);
Для HTTP wrapper'а рабочим является только режим 'чтения' ('x'/'x+' тоже работают, но видимо они просто заменяются на 'r', т.к. x для лок. файлов).
http://localhost (;) ), а когда указал через переменную $DOCUMENT_ROOT, то все получилось. Вот теперь еще одна беда - кириллица записывается квадратиками вместо букв... Помогите, плиз!
На самом деле я ошибся в указании пути до создаваемого файла. Я указывал
Спасибо!
1. fread считывает файл как есть, в то время как fpassthru зависит от того, как был открыт файл/поток и т.п.
2. fread не считывает ВСЁ СРАЗУ и тем самым не забирает зачастую лишних ресурсов, в то время как fpassthru, readfile и file этим похвастаться не могут.
Этого вообще-то и достаточно, хотя..
3. использование fread хотя бы на миллиметр приблизит тебя к пониманию как работают с файлами в более серьезных языках.
<?php
$sock = fsockopen('127.0.0.1',80,$errno,$errstr,15);
fwrite($sock,"GET /index.php HTTP/1.0\nConnection: Close;\n\n");
while (!feof($sock))
{
echo fread($sock,512);
}
fclose($sock);
?>
4. по заверениям "народа", зачастую, а то и в большинстве случаев fread/fgets работают значительно быстрее упрощенных функций.
Сам не проверял, потому как просто предпочитаю их не юзать (хотя к юзанию file прибегаю), но так я с php только-только начал работать;)ъ
И самое главное, тебе не нужно знать какого размера файл, пример выше это в полной мере подтверждает. Считывать и юзать инфу отдельными порциями гораздо экономнее, чем всё сразу.
ps: imho и не более.