Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Webmaster Zone > Web Development
Register

Reply
 
LinkBack Thread Tools
Old 13.10.2003, 06:26   #1
Младенец
 
di0phantus's Avatar
 
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default Как перенапрлять потоки? STDOUT, FILE

ov im nman gone mi qich PERL giti kimana, vor
print-@ ashxatum er patoknerov, tipa

$file = $condition ? ">some.file" : ">-";
open (F, $file);

print F $data;

hima vonc karelia nman mi ban irakanacnel php-um?
asenq grel senc mi ban

function out($data, $file) {
// .... kaxvac $file-ic
}
Reply With Quote
Old 13.10.2003, 20:45   #2
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

sha skazhu
Reply With Quote
Old 13.10.2003, 20:47   #3
WYSIWYG
 
mk's Avatar
 
Join Date: 05 2002
Location: /dev/null
Age: 37
Posts: 592
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

RTFM aka rtfm.
Reply With Quote
Old 13.10.2003, 20:47   #4
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

rtmf eshe raz :)



http://php.net/fopen




kurit' na predmet special'nyh fajlow php://stdin, php://stdout i , kak vy uzhe dogadalis', doragaju publika, php://stderr :)

dal'she objasnjat' nado ?
Reply With Quote
Old 13.10.2003, 20:49   #5
WYSIWYG
 
mk's Avatar
 
Join Date: 05 2002
Location: /dev/null
Age: 37
Posts: 592
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

О! он даже сказал man что! (:
Reply With Quote
Old 16.10.2003, 08:59   #6
Младенец
 
di0phantus's Avatar
 
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default жнаю жнаю... :))

пипл.. однако это всего лишь теория,
а на практике?

я сам пробывал, примерно так.

Code:
<?PHP

function my_print ($data, $out_stream = 'php://stdout') {
   $h = fopen($out_stream, 'w');
   fwrite($h, $data);
}

my_print('Kuckuck');
?>
потом 1. запускаем с командной строки
php.exe -q out.php
получаем Kuckuck

все ОК, потом делаем запрос на этот файл серверу..
http://localhost/that_file.php

и ничего не получаем...
---------------------------------------------
я получается неправильно сформулировал вопрос...

можно я еще? :)

я так понял echo, print выводят не на stdout a прямо в клиенту в сокет. а есть способ получить handle oт этого патока?
Reply With Quote
Old 16.10.2003, 12:06   #7
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

А что ты хочешь сделать? Можешь объяснить подробней?
Reply With Quote
Old 16.10.2003, 12:56   #8
Младенец
 
di0phantus's Avatar
 
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

>>А что ты хочешь сделать? Можешь объяснить подробней?

Без проблем.

есть такая идея написать что отдаленно похожую на
препроцессора или частично компилятора (как в Си, только намного проще)
а цель, просто чтобы ускорить процесс генерацыи сайта.

в двух словах...

страница генерируется на основе тэмплитов, где многое описано моими тэгами. тут просто имеет смысл (так как некоторые тэги не зависят от параметров запроса) частично скомпилировать его... а после, генерировать страницы от скомпилированных тэмплитов...

такой подход реализован в Smarty, правда я в кодах не копался еще... но идея пришла оттуда..

короче надо чтоб мой компилятор в зависимости от параметров или выводил исход в файл или куда он там выводит... (разумеется если в файл то частично комплированную версию)

Не то что проблему нельза никак решить, просто желательно решить красиво... а то всегда можно вставить парочку иф элсов..
Reply With Quote
Old 16.10.2003, 13:38   #9
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

А что тебе мешает сделать так:
1. Как в Smarty (компилируемый шаблон)
Есть шаблон. Smarty компилирует его один раз и получает код на php.
2. Как в других, некомпилируемых шаблонах
Есть шаблон. При выполнении скрипта шаблон парсится и получается php код, который сразу выполняется.
3. Написать модуль для php
Модуль, который работает по схеме 1 или 2.
4. Перехватывать httpout
В php можно перехватывать буфер вывода. Ты можешь обрабатывать его, но это будет обработка уже после php.
Или тебе все же надо что-то другое?
Reply With Quote
Old 16.10.2003, 15:07   #10
Младенец
 
di0phantus's Avatar
 
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

мешают в основном время, нервы и т.д.
я в смарти не копался, но прифейс читал... так что знаю только что там реализовано, но не знаю как...

было бы время я бы покапался в кодах, уверен многому и научился бы...
я сам не намереваюсь писать что-то очень гибкое универсальное, просто хочу предусмотреть возможность прекомпиляции на случай если время парсинга в обычном режиме неустроит.

честно говоря тот код который сейчас есть, меня устраивает.
занимаюсь РНР я с недавних пор, и этот вопрос я просто хотел бе выяснить для себя..

а вопрос пока что остался открытым... а именnо
как echo ili print zamenit' na fwrite(...)
Reply With Quote
Old 16.10.2003, 15:40   #11
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

А так не подходит?

<?php

ob_start();

...

echo 'Hello World!';

...

$content = ob_get_contents();
ob_end_clean();

...

fwrite ($fp, $content);

?>
Reply With Quote
Old 17.10.2003, 07:54   #12
Младенец
 
di0phantus's Avatar
 
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

так гораздо теплее :))

hayk: спасибо за помощь. код нехитрый но многое показал с чем я не был знаком, я еще почитаю про этот буферинг.

а доступа к этому потоку наверно и не предусмотрено, хотя ничего не доказывает это.
если узнаю дам знать...

спасибо всем еще раз.
Reply With Quote
Old 18.10.2003, 00:24   #13
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally posted by di0phantus
так гораздо теплее )

hayk: спасибо за помощь. код нехитрый но многое показал с чем я не был знаком, я еще почитаю про этот буферинг.

а доступа к этому потоку наверно и не предусмотрено, хотя ничего не доказывает это.
если узнаю дам знать...

спасибо всем еще раз.

да. если нужн овыловить результат работы пхп сцрипта - фол'ко через буфферинг ...или
fopen("http://foor.com/bar.php", "r") nu i daльше получить результат его работы ...
2 жариант чуть более (или очень более) загружает сервер )
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 19:49.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.