[PHP] Wyczytanie skompilowanego pliku

0

Jak pobrać do jednoego pliku PHP drugi już wykonany.
To znaczy mam np.
plik1

Dzis jest <?=date('d-m-y')?>

i w drugim pliku chciałbym pobrać do zmiennej już wykonany ten plik, to znaczy już z wpisaną datę.

Dałem prosty przykład, ale tak naprawde jest dużo funkcji do wykonania i chcę ich rezultat.

0

Nie bardzo rozumiem ideę. Chodzi Ci o to, ze skrypty mają przesyłac infomacje między sobą jak cś tam użytkownik zrobi?
Bo jeżeli tak to metoda GET lub POST.
A jeśli dla przejrzystości napisałeś jakies funkcje w różnych plikach, to zostaje opcja "include"...

0

Nie, nie, nie. Chodzi mi o to, że mam dwa pliki PHP.
Teraz, w jednym pliku, chce do zmiennej załadować zawartość drugiego pliku, nie kod! Skompilowaną wersję, rezultat, już nie PHP, a html.
Nie wiem jak to jeszcze wytłumaczyć.

Chwilowo znalazłem inne rozwiaznie, po prostu "cofamy się" i wyczytujemy plik od zewnątrz co daje nam jego skompilowaną wersję.

$plik = fopen('http://'.$_SERVER["SERVER_ADDR"].'/test1.php', 'r');
 $content=fread($plik, 65552);
fclose($plik);
0

plik1.php

 Dzis jest <?php date('d-m-y'); ?> 

skrypt.php

<?php
$tmp = 'plik1.php';
$f = fopen($tmp, 'r');
flock($f, 2);
$text = fread($f, filesize($tmp));
flock($f, 3);
fclose($f);

eval($text);
?>

Ja bym zrobił coś w tym stylu.

0

a :

include "plik.php"

lub

require "plik.php"

to jest dołączanie plików

a to

Dzis jest <?=date('d-m-y')?>

zrób w formie funkcji i się do niej odwołuj

0

Vengeance, pomysł jest dobry(sam go studiowałem ;), lecz problem polega na tym iż funkcja

eval()

wykonuje jedynie kod PHP, a tam również będzie HTML, normalna stronka - PHP + Html + inne bajery.

koxak, tak wena też dobra ;) Ale ja chcę przypisać do zmiennej skompilowaną zawartość pliku!

Dla sprostowanie, różnie to nazywają ;) interpretacja <-> kompilacja

0

tak dla sprostowania to PHP jest interpretowany a nie kompilowany

0

Tak się zastanawiam i ja bym uderzył w stronę odwołania się do funkcji shell_exec, uruchamiasz plik i sprawdzasz strumień który został zwrócony. Ale to nie zadziała w "trybie bezpiecznym" innej metody chyba nie ma.
Może napiszesz po co Ci to, może jest łatwiejszy sposób na uzyskanie tego efektu.

0

Pisze system cachujacy, to znaczy, mam strone na której jest dużo kodu PHP + wyczytywanie z bazy danych, ale to sie zmienia co np. 3 godziny. Dlatego przed każdym wyczytaniem, system sprawdzi czy dany plik jest zkeczowany, jesli jest po prostu go wyczyta, a jesli nie wygeneruje. Usprawni to prace portalu.

Opisałem po krótce, ale po drodze jest wiele skomplikowanych funkcji ;)

Jest to potrzebne przy normalnym połaczeniu, bezpieczne raczej nie. Sprawdze tą funkcję i dam znać. Piszcie może teorię jak to zrobić, a już praktykę jakoś wykombinuje :)

0

Ja ciągle tego nie rozumiem, więc pytania naprowadzające ;)
Chcesz usprawnić działanie portalu, żeby nie pobierał za każdym razem danych z bazy tylko statyczny tekst?
Więc jeśli tak, to może dodaj funkcje przy aktualizacji która wygeneruje statyczny html, zapisze do pliku, a później opcją include go tam dodaj, napisz czy dobrze zrozumiałem...

0

plik1.php

Dzis jest <?php date('d-m-y'); ?> 

skrypt.php

<?php
$tmp = 'plik1.php';
$f = fopen($tmp, 'r');
flock($f, 2);
$text = fread($f, filesize($tmp));
flock($f, 3);
fclose($f);

ob_start();
eval($text);
$www  = ob_get_clean();

// w zmiennej $www masz to co chciales (tak sadze) ;)
?>
0

Brawo, Panczo, dobrze zrozumiałeś, lecz ten text ma być pobrany z pliku, gdyż On sam w sobie jest wykonywany i róznież musi działać samoistnie, znów motam ;)

Już mnie powoli rozumiecie.

Vengeance, sorry, ale ten kod mi nie działa :/ Spróbuj go sprawdzić, bo też to jest pomysł, ale nie zabardzo go pojmuje.

Przydała by się funkcja która kompiluje/interpretuje kod, cały wraz z html.

Pomyślałem może, żeby pobrać adres pliku php.exe i przekazać jemu ten plik do wykonania, a potem pobrać gotowy kod. Tylko jeszcze nie moge dojsc jak to zrobić :)

0

Ja nie rozumiem, o co ci chodzi.

Masz plik php:

Dzis jest <?php echo(date('d-m-y')); ?>

i teraz co, chcesz mieć czysty html? "Dzis jest 29-4-04"? To twórz zwykłe pliki html, tak, jak ktoś już powiedział. Nie rozumiem, co ty byś tu chciał eval'ować. Przecież eval(echo(date('d-m-y'))); na pewno nie wykona się szybciej, niż echo(date('d-m-y'));... Więc albo include jest najlepszym rozwiązaniem, albo tak kompletnie namotałeś, że zupełnie nie zrozumiałem, co chcesz osiągnąć i po co...

0

lol, a nie mozesz zamiast echo wstawic fwrite i zapisac gdzies ten plik?

0

A dac rozszerzenia pliku na .txt, wtedy zostanie wykonany podczas includowania....
(Chyba)

0

Nie, Nie, Nie :)

Znalazłem rozwiązanie, wystarczy, że siądziesz po przerwie do kompa i Od razu na wszystko wpadniesz! :) Wcześniej próbowałem, ale widocznie robiłem jakieś głupie błędy.
Rozwiązanie to:

 ob_start();
  include('../'.$file);
  $data = ob_get_contents();
 ob_clean();

ten fragment załaduje do zmiennej

$data

zinterpretowany już kod PHP, dalej można z nim robić co się chce :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1