Virtual() в PHP - может, кто сталкивался? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 13 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Заголовок сообщения: Virtual() в PHP - может, кто сталкивался?
Сообщение Добавлено: 21 Май 2007, 07:53:01 
Не работает чудо-функция
Код:
bool virtual ( string $filename )
в PHP.


Цитата:
virtual() is an Apache-specific function which is similar to <!--#include virtual...--> in mod_include. It performs an Apache sub-request. It is useful for including CGI scripts or .shtml files, or anything else that you would parse through Apache. Note that for a CGI script, the script must generate valid CGI headers. At the minimum that means it must generate a Content-type header.

To run the sub-request, all buffers are terminated and flushed to the browser, pending headers are sent too.

This function is only supported when PHP is installed as an Apache module.



Все требования соблюдены - PHP 5 стоит как apache module, OS Sun Solaris 10.

Если кто-то сталкивался, помогите.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Май 2007, 08:00:45 

Konyukhov писал(а):
Не работает чудо-функция


telepat mode OFF

а что означает не работает?

_________________
Записки мобильного веб разработчика
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 21 Май 2007, 10:46:52 
пишет, что функция не определена или что?

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 21 Май 2007, 10:56:56 
К сожалению, не могу отвечать чаще, чем через 2 часа - ограничения на форуме :(

Ситуация следующая. Я разобрался, слово "неработает" заменяю на "работает, но черт её знает как"!.

Пишу:

Код:
$page = '/dir/page.php';
$content = virtual( $page );
$content = iconv( 'CP1251', 'UTF-8', $content ); // это для того, чтобы через AJAX всё было по-русски
print $content;


абсурд в том, что когда я комментирую строку
Код:
print $content;
, у меня всё равно на экране появляется вывод скрипта
Код:
$page
… бред какой-то!

Я так понимаю, что VIRTUAL должен выполнить подзапрос и выдать мне результаты выполнения в переменную, а он, нехороший такой, плюют всё это мне в лицо.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 21 Май 2007, 11:07:33 
Konyukhov, книжки -- читать, траву -- курить. Не наоборот.


Цитата:
bool virtual ( string $filename )



Тебе известен смысл слова bool? С его ты решил, что эта функция вернет тебе HTML-текст?
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 22 Май 2007, 04:52:51 
Crazy, сорри, вот облажался я, так облажался... не обратил почему-то внимания на bool, видимо, потому, что так надеялся на результат :cry:

А есть какой-нибудь способ получить таки результат отработки PHP скрипта в строку, не переделывая сам скрипт? Часть скриптов всё же переделал, но проект огромный, руки чешутся всё на AJAX перевести... с HTML-то понятно, как поступать, а вот PHP?

_________________
Лишь одно в моём кармане - беспонтовый пирожок
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 22 Май 2007, 06:46:24 
Konyukhov,
file_get_contents('полный урл')

_________________
Записки мобильного веб разработчика
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 22 Май 2007, 07:29:40 
fStrange, спасибо, попробую... вообще-то я сильно сомневался, что обработка пост-процессором PHP происходит в этой функции... :confused:

P.S. проверил... работает. Только несколько "засад" обнаружилось - не видны ранее установленные переменные (включая сессионные), результаты ранее выполненных INCLUDE и т.д... Т.е. всё же без тотальной переделки не обойтись :(

_________________
Лишь одно в моём кармане - беспонтовый пирожок
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 22 Май 2007, 09:32:25 

Konyukhov писал(а):
результат отработки PHP скрипта в строку,



Konyukhov писал(а):
Только несколько "засад" обнаружилось - не видны ранее установленные переменные (включая сессионные),



тут налицо глобальное противоречие и непонимание как работают файловые функции

засесть в мануал и читать разницу между языковыми конструкциями типа include, require и файловыми функциями fopen, file_get_contents

_________________
Записки мобильного веб разработчика
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 22 Май 2007, 10:02:20 

fStrange писал(а):
тут налицо глобальное противоречие и непонимание как работают файловые функции



...как работает веб-сервер и как работает PHP.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 22 Май 2007, 10:04:43 

Konyukhov писал(а):
P.S. проверил... работает. Только несколько "засад" обнаружилось - не видны ранее установленные переменные (включая сессионные), результаты ранее выполненных INCLUDE и т.д... Т.е. всё же без тотальной переделки не обойтись Sad



попробуй включать буферизацию ob_start
потом делать include на этом участке, забирать ob_get_contents и завершать буферизацию

_________________
:: metal kick ass ::
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 22 Май 2007, 10:34:04 
fStrange, Crazy, прошу вас, не нужно так драматизировать. Некоторое (пусть и поверхностное) понимание (которого мне до сих пор хватало) есть, что недопонимаю - столкнусь - пойму, только диагнозы, прошу, ставить не нужно.

MpaK999, спасибо, я уже об этом думал, но всё же мне наверное лучше попотеть и довести до ума все скрипты, чтобы выдавали они только строки. У меня сайт построен по типу конструктора, т.е. за каждый участок контента на странице (разбитый на слои) отвечает отдельный скрипт. С помощью AJAX удобно вызывать только тот скрипт, который отвечает за перестроение указанного участка контента (слоя). Но так как ранее они все были завязаны через INCLUDE, то все промежуточные переменные были доступны в порядке инициализации. А сейчас мне мешает то, что во многих скриптах есть PRINT или HTML-вставки.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 22 Май 2007, 12:21:59 
Konyukhov, по идеи да, вернее всегда чтобы был return с результатом, мороки меньше потом...

_________________
:: metal kick ass ::
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 13 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100