![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
Как перенапрлять потоки? STDOUT, FILE |
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
13.10.2003, 05:26
|
#1
|
Младенец
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Rep Power: 0
|
Как перенапрлять потоки? 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
}
|
|
|
13.10.2003, 19:45
|
#2
|
ЙЦУКЕН
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 54
Posts: 3,118
Rep Power: 0
|
sha skazhu
|
|
|
13.10.2003, 19:47
|
#3
|
WYSIWYG
Join Date: 05 2002
Location: /dev/null
Age: 44
Posts: 592
Rep Power: 0
|
RTFM aka rtfm.
|
|
|
13.10.2003, 19:47
|
#4
|
ЙЦУКЕН
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 54
Posts: 3,118
Rep Power: 0
|
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 ?
|
|
|
13.10.2003, 19:49
|
#5
|
WYSIWYG
Join Date: 05 2002
Location: /dev/null
Age: 44
Posts: 592
Rep Power: 0
|
О! он даже сказал man что! (:
|
|
|
![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
жнаю жнаю... :)) |
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
16.10.2003, 07:59
|
#6
|
Младенец
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Rep Power: 0
|
жнаю жнаю... :))
пипл.. однако это всего лишь теория,
а на практике?
я сам пробывал, примерно так.
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т этого патока?
|
|
|
16.10.2003, 11:06
|
#7
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
А что ты хочешь сделать? Можешь объяснить подробней?
|
|
|
16.10.2003, 11:56
|
#8
|
Младенец
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Rep Power: 0
|
>>А что ты хочешь сделать? Можешь объяснить подробней?
Без проблем.
есть такая идея написать что отдаленно похожую на
препроцессора или частично компилятора (как в Си, только намного проще)
а цель, просто чтобы ускорить процесс генерацыи сайта.
в двух словах...
страница генерируется на основе тэмплитов, где многое описано моими тэгами. тут просто имеет смысл (так как некоторые тэги не зависят от параметров запроса) частично скомпилировать его... а после, генерировать страницы от скомпилированных тэмплитов...
такой подход реализован в Smarty, правда я в кодах не копался еще... но идея пришла оттуда..
короче надо чтоб мой компилятор в зависимости от параметров или выводил исход в файл или куда он там выводит... (разумеется если в файл то частично комплированную версию)
Не то что проблему нельза никак решить, просто желательно решить красиво... а то всегда можно вставить парочку иф элсов..
|
|
|
16.10.2003, 12:38
|
#9
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
А что тебе мешает сделать так:
1. Как в Smarty (компилируемый шаблон)
Есть шаблон. Smarty компилирует его один раз и получает код на php.
2. Как в других, некомпилируемых шаблонах
Есть шаблон. При выполнении скрипта шаблон парсится и получается php код, который сразу выполняется.
3. Написать модуль для php
Модуль, который работает по схеме 1 или 2.
4. Перехватывать httpout
В php можно перехватывать буфер вывода. Ты можешь обрабатывать его, но это будет обработка уже после php.
Или тебе все же надо что-то другое?
|
|
|
16.10.2003, 14:07
|
#10
|
Младенец
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Rep Power: 0
|
мешают в основном время, нервы и т.д.
я в смарти не копался, но прифейс читал... так что знаю только что там реализовано, но не знаю как...
было бы время я бы покапался в кодах, уверен многому и научился бы...
я сам не намереваюсь писать что-то очень гибкое универсальное, просто хочу предусмотреть возможность прекомпиляции на случай если время парсинга в обычном режиме неустроит.
честно говоря тот код который сейчас есть, меня устраивает.
занимаюсь РНР я с недавних пор, и этот вопрос я просто хотел бе выяснить для себя..
а вопрос пока что остался открытым... а именnо
как echo ili print zamenit' na fwrite(...)
|
|
|
16.10.2003, 14:40
|
#11
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
А так не подходит?
<?php
ob_start();
...
echo 'Hello World!';
...
$content = ob_get_contents();
ob_end_clean();
...
fwrite ($fp, $content);
?>
|
|
|
17.10.2003, 06:54
|
#12
|
Младенец
Join Date: 05 2002
Location: Yerevan, RA
Posts: 58
Rep Power: 0
|
так гораздо теплее :))
hayk: спасибо за помощь. код нехитрый но многое показал с чем я не был знаком, я еще почитаю про этот буферинг.
а доступа к этому потоку наверно и не предусмотрено, хотя ничего не доказывает это.
если узнаю дам знать...
спасибо всем еще раз.
|
|
|
17.10.2003, 23:24
|
#13
|
ЙЦУКЕН
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 54
Posts: 3,118
Rep Power: 0
|
Quote:
Originally posted by di0phantus
так гораздо теплее )
hayk: спасибо за помощь. код нехитрый но многое показал с чем я не был знаком, я еще почитаю про этот буферинг.
а доступа к этому потоку наверно и не предусмотрено, хотя ничего не доказывает это.
если узнаю дам знать...
спасибо всем еще раз.
|
да. если нужн овыловить результат работы пхп сцрипта - фол'ко через буфферинг ...или
fopen("http://foor.com/bar.php", "r") nu i daльше получить результат его работы ...
2 жариант чуть более (или очень более) загружает сервер )
|
|
|
All times are GMT. The time now is 00:56. |
|
|