IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Как прочитать уже обработанный файл? (https://www.imho.ws/showthread.php?t=34936)

sanchos 22.07.2003 16:13

Как прочитать уже обработанный файл?
 
Проблема в следующем:
к примеру, есть файл text.php:
PHP код:

include("text.txt"); 

в файле text.txt хранится некое слово.
Так мне нужно скриптом прочитать файл text.php, чтобы на выходе у меня получилось именно некое слово, хранящееся в файле text.txt, а не код, который находится в самом text.php.
Как мне это сделать? Помогите! :)

d0rM03D 22.07.2003 18:36

SaNChos
а разве при вставке через include, не происходит выполнение скрипта?

medved2002 22.07.2003 18:43

Если ты вставишь include'ом пхп (или любой исполняемый) файл - то у тебя вставиться результат выполнения скрипта, и будут доступны функции и переменные которые там были описаны.

если ты вставишь текстовый файл - то он просто у тебя вывыдется..

если тебе надо открыть файл и чего-то там прочитать то юзай fopen, fread и так далее

sanchos 23.07.2003 09:25

d0rM03D, medved2002
Все это я понимаю... вроде, не настолько дурак :)
Вы просто меня не поняли.
Значит задача стоит такая - поиск в тексте, который генерится скриптом. Если я открою fopen'ом, то прочитаю скрипт, а не результат его выполнения. Понятно? :) Мне нужен результат выполнения скрипта, а не его код читать.
Так вот как? :/

medved2002 23.07.2003 10:05

блин открой его через абсолютный путь и радуйся жизни

d0rM03D 23.07.2003 11:47

SaNChos
помойму можно сделать проще - результат работы скрипта загонять в другой текстовый файл и по нему уже искать.

sanchos 23.07.2003 12:42

d0rM03D
Имхо, нет :( Представляешь, если у меня не один такой скрипт :) Или его результат слишком велик? :(

sanchos 23.07.2003 16:38

medved2002
абсолютный путь не помогает :(

Stasik 23.07.2003 16:52

делай exec("file.php"); или passthru("file.php"); как я понял

medved2002 23.07.2003 17:16

В сымсле не помогает.. Лично у меня отлично работает

$fp = fopen('http://www.dav.ru/main.php', 'r');

sanchos 23.07.2003 17:21

Stasik
По-моему, ты правильно меня понял :)
Только вот через fpassthru все равно выводит код, а на passthru выполняет недопустимую операцию :(
Чего делать? Может ты пример чтения этой бодяги можешь дать? :)

Stasik 23.07.2003 21:15

код мож дать всего этого дела?

d0rM03D 23.07.2003 22:27

SaNChos
в таком случае это конечно не подойдет:)

sanchos 24.07.2003 09:08

Stasik
Было бы совсем хорошо :) Сенькс.

d0rM03D
Так что подойдет? :/

sanchos 24.07.2003 10:26

medved2002
Понимаешь, если так делать, то все пути в обрабатывающем скрипте, который и генерит инфу, придется указывать абсолютно тоже... Быстродействие? :/
Но если указать, то работает :)
Вот только нужно мне немного другой способ :(

sanchos 24.07.2003 11:06

medved2002
Мда... проверил я быстродействие такого способа... результаты меня не порадовали :(
Для сравнения: чтение результата скрипта занимает около 0.35 сек, а шести файлов, в которых ничего не генерируется, - 0.0025... :(
Нужен другой способ

RaZEr 24.07.2003 13:09

Так а какие проблемы с include "http://server.com/script.php"; или eval(fopen()); ?

medved2002 24.07.2003 14:02

Цитата:

Как писал SaNChos
medved2002
Понимаешь, если так делать, то все пути в обрабатывающем скрипте, который и генерит инфу, придется указывать абсолютно тоже... Быстродействие? :/
Но если указать, то работает :)
Вот только нужно мне немного другой способ :(

Быстродействие - очень просто время выполнения скрипта который ты обрабатываешь + время скрипта который обрабатывает.

Другой вариант.
ob_start();
include('чего надо');
$string = ob_get_contents (); //получаем что пытался написать
твой скрипт
ob_end_clean ( ); //убиваем что пытался написать.


И в третьих задачу опиши ибо похоже ты просто пытаешь не правильно ее решить.

sanchos 24.07.2003 14:33

RaZEr
include'ом не поможет, я же говорил. мне нужно не включать файл скрипта, а получить результат его обработки...

sanchos 24.07.2003 14:35

medved2002
Попробовал я как ты сказал, но что-то мне вообще никаких результатов выдавать не хочет :(

medved2002 24.07.2003 14:41

Напиши кода как тестил.

Опиши задачу.

RaZEr 24.07.2003 14:59

Цитата:

include'ом не поможет, я же говорил. мне нужно не включать файл скрипта, а получить результат его обработки...
По твоему http://server.com/script.php отдаст тебе сырец ... или может быть eval() не сработает ... мде ... вообщем без комментариев ...

sanchos 24.07.2003 15:30

RaZEr
Я не гворил что включение кода по абсолютному пути даст мне сам код!!! Не надо меня считать совсем за тупого, плиз.
Просто, видимо, ты не понял ту задачу, которую я здесь поставил, либо поленился прочитать несколько моих предыдущих постов... :(

sanchos 24.07.2003 15:36

medved2002
Объясняю ситуацию на "пальцах" :)
- у меня есть 1-ая группа скриптов, которая генерит инфу на страницы.
- есть скрипт поиска... поиск в файлах *.php
Так понятно? :)

Задача состоит в следующем:
- получить инфу скриптом поиска из первой группы скриптов. обработать и выдать результат факин поиска :)

RaZEr
Как ты представляешь include в этом случае? Выводить все результаты всех страниц???

ЗЫ Имхо, мне нужно запихать эти результаты в какой-то поток, потом его обработать и выдать результат.
По средствам открытия файлов абсолютным путем все получается, но достаточно долго. Есть ли другой способ?

Вот и все, что я хотел спросить. Надеюсь, что на этот раз всем стало ясно, что я хочу сделать. Спасибо за внимание :)

RaZEr 24.07.2003 15:44

Посты я твои прочесть не поленился, но видимо у тебя русский язык второй, потому что я незнаю что еще могут означать слова "Мне нужен результат выполнения скрипта" ... тебе и дали как этот результат получить .

Ты спрашиваешь "По средствам открытия файлов абсолютным путем все получается, но достаточно долго" ... тебе сказали как открыть с относительным (fopen(),eval()) ...

"Не надо меня считать совсем за тупого, плиз" ... это не я сказал ...

medved2002 24.07.2003 15:46

1. Ну вообще если есть возмножность ставь mnogoSearch. :)

2. Способ открытия абсолютным путем наиболее подходит в этом случае.

3. Теперь осталось выяснить почемe не работает ob_flush. Версия ПХП и ОС?

medved2002 24.07.2003 15:47

А ты собираешься при поиске каждый раз запускать скрипт который будет обрабатывать?
Если так то это не хорошо - сделай индексацию и все в базу или еще куда.

sanchos 24.07.2003 15:52

medved2002
1. Побежал ставить :)
2. Работает, только долго. Вот я и спрашивал есть ли другой способ... :(
3. 4.1.0, Win98SE

А насчет "еще куда" я уже начал подумывать... :(

medved2002 24.07.2003 15:56

3. Тады ясно - с flush() были какие-то траблы под виндой... По крайней мере у меня, ламака. Попробуй либо ПХП поставить поновее, либо Винды сменить :))))))))

2. Ну долго - если будешь результаты куда-то ложить то никаких траблов не будет..

RaZEr 24.07.2003 16:04

4.1.0 ... flush работает начиная с 4.2.0 .

sanchos 24.07.2003 16:17

RaZEr
>Посты я твои прочесть не поленился, но видимо у тебя русский язык второй, потому что я незнаю что еще могут означать слова "Мне нужен результат выполнения скрипта" ... тебе и дали как этот результат получить .

1. Языком владею вполне нормально. Русский - первый, но не последний.
2. Как обычно получить результат я знаю. Поэтому немного переформулировал свой вопрос позже.

>Ты спрашиваешь "По средствам открытия файлов абсолютным путем все получается, но достаточно долго" ... тебе сказали как открыть с относительным (fopen(),eval()) ...

fopen не катит. может пример дашь, если сейчас понял мою задачу?

>"Не надо меня считать совсем за тупого, плиз" ... это не я сказал ...

А "мде ... вообщем без комментариев ..." может показаться достаточно резким добавлением к ответу, по крайней мере, не совсем приятным. Если ты решил мне помочь, то, плиз, нельзя ли это делать немного вежлевее, объяснять понятнее или не делать вообще? Не все такие "гуру" как ты. Имхо, для этого и существует форум, чтоб спрашивать и получать ответы.

ЗЫ Я не хочу продолжать этот бессмысленный спор, портить нервы себе, постить "пустые" посты: я сюда не за этим пришел. Так что предлагаю тебе набраться немного терпения в мою сторону и попытаться понять,. Я только учусь и хотелось бы не замечать "мдя, мде, ууу" и тд. Спасибо.

sanchos 24.07.2003 16:18

medved2002
Спасибо тебе за помощь :)
Отдал бы тебе второй голос, но он у меня только один :)

RaZEr 24.07.2003 16:40

Цитата:

fopen не катит. может пример дашь, если сейчас понял мою задачу?
Пример ? :

$files = array('page1.php','page2.php','page3.php');
$buf = '';
foreach($files as $file_name) {
$fp = fopen($filename,'r');
if ($fp) {$buf .= eval(fread($fp,filesize($file_name))); fclose($fp); }
}

Про вежливее и фразы "без комментариев": я тебе пишу как получить результат работы скрипта, а ты мне "мне нужно не включать файл скрипта, а получить результат его обработки" ... меня возмутило не твое знание PHP, а твоя невнимательность или называй как хочешь ...

А спор и правда продолжать не стоит, тебе его и начинать не следовало ... и это уже не первый спор между нами ...

sanchos 24.07.2003 17:32

RaZEr
Ладно, если я был неправ, то извини :) Забили про спор и т.д. и т.п.
Насчет примера:
<?
$fp = fopen("file.php" ,"r");
$buf = eval(fread($fp, filesize("file.php")));
fclose($fp);
?>
Parse error: ... eval()'d code on line ... :((
Чего делать?

RaZEr 24.07.2003 17:56

Незнаю ... попробуй или так:

$buf = eval(fread($fp, filesize("file.php")).'return();');

или через буфер вывода:

$files = array('page1.php','page2.php','page3.php');
$buf = '';
foreach($files as $file_name) {
ob_start();
include $file_name;
$buf .= ob_get_contents();
ob_end_clean();
}

medved2002 24.07.2003 18:17

Мне кажеться что например вот такая конструкция

$eeee = eval('echo "medved";'); ничегошеньки тебе в $eeee не запишет а просто выведет "medved" посему $buf = eval(fread($fp, filesize("file.php"))); - лишено какого-либо смысла

medved2002 24.07.2003 18:25

Цитата:

Как писал SaNChos
Спасибо тебе за помощь :)
Да обращайся

Цитата:

Как писал SaNChos
Отдал бы тебе второй голос, но он у меня только один :)
Да спасибо достаточно.

RaZEr 25.07.2003 04:00

Цитата:

посему $buf = eval(fread($fp, filesize("file.php"))); - лишено какого-либо смысла
Может быть, я не помню возвращает ли eval() результат если в коде нет вызова return() ... но ты видимо невнимательно читаешь мои посты, я уже пример и с return() постил.

sanchos 25.07.2003 09:18

Все, работает :) Всем спасибо :)

RaZEr 25.07.2003 09:29

Так как ты все-таки сделал ?


Часовой пояс GMT +4, время: 22:16.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.