Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PHP: Writeable Connection

2.0K
14 апреля 2005 года
Junkers
47 / / 21.02.2004
Применяю функцию

 
Код:
fopen('path/to/file.txt', 'a')


а вответ получаю

... failed to open stream: HTTP wrapper does not support writeable connections...

Как с этим бороться? Использую Денвер.

Спасибо!
287
14 апреля 2005 года
Shiizoo
958 / / 14.03.2004
Ну если он не поддержтвает writable conn., то видимо и не будет. HTTP не позволяет редактирование контента, дает от силы два метода для чего-то отдаленно напоминающего редактирование PUT/DELETE, но особо с ними не разгонишься, и уж тем более не добавишь такую-то строку в файл на таком-то смещении.

$file = fopen('http://127.0.0.1/index.php','r');
echo $str = fread($file,1024);
fclose($file);

Для HTTP wrapper'а рабочим является только режим 'чтения' ('x'/'x+' тоже работают, но видимо они просто заменяются на 'r', т.к. x для лок. файлов).
2.0K
16 апреля 2005 года
Junkers
47 / / 21.02.2004
На самом деле я ошибся в указании пути до создаваемого файла. Я указывал http://localhost (;) ), а когда указал через переменную $DOCUMENT_ROOT, то все получилось. Вот теперь еще одна беда - кириллица записывается квадратиками вместо букв... Помогите, плиз!
2.0K
18 апреля 2005 года
Junkers
47 / / 21.02.2004
С кириллицей разобрался. Теперь вот вопрос: какой функцией лучше всего (быстрее всего/удобнее всего) считывать файл? fread() (надо указывать размер считываемого файла, находящегося на другом хостинге - не подходит), fpassthru() или file() (для обеих последних функций почему-то не срабатывает nl2br() - не сохраняется форматирование, ни считываются теги).

Спасибо!
287
19 апреля 2005 года
Shiizoo
958 / / 14.03.2004
Вообще я считаю использование fread вообще граммотней, а если мое имхо в пример не брать, то все-равно во множестве случаев использование fread гораздо уместнее file и уж тем более fpassthru. И все это потому что:

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 только-только начал работать;)ъ

И самое главное, тебе не нужно знать какого размера файл, пример выше это в полной мере подтверждает. Считывать и юзать инфу отдельными порциями гораздо экономнее, чем всё сразу.
287
19 апреля 2005 года
Shiizoo
958 / / 14.03.2004
Просто штука такая. На хостингах выделяют не так мого памяти в одну морду, в один виртуалхост. Для малых и средних сайтов используют именно виртуалхосты, а не солокейшн, а значит потолок определенно будет, и не просто будет, а будет дольно низкий. Суть cgi-приложений такова, что чем полезнее ресурс, тем больше копий приложения будет запущено. Есть конечно всяческие методы оптимизации, кеширования и т.п. и т.д., но станут ли этим заниматься на малых проектах? А вот написать такое приложение, которое просто не будет влезать в дозволенные рамки проще некуда. Чем граммотней будет код, тем меньше будет гемора=)ъ

ps: imho и не более.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог