Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Dynamiczne includowanie
tracerout
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.07.2009

Ostrzeżenie: (0%)
-----


Chcial bym dynamicznie includowac pliki petla(chodzi o to zeby nie trzeba bylo ponownie odpalac skryptu przy zmienie jednej funkcji z includowanym pliku), PHP pluje sie ze nie mozna ponownie zadeklarowac funkcji. Wiem o tym ze mozna wykonywac evalem albo uzywac do tego "php -r" ale dla mnie to ostatecznosc. Prosze o pomoc.

Przykład:
  1. <?php
  2. while(1) {
  3.   include('plik.php');
  4.   ft();
  5. }
  6. ?>


Plik "plik.php":
  1. <?php
  2. function ft() {
  3.   echo "test";
  4. }
  5. ?>


Ten post edytował tracerout 2.07.2009, 14:06:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No wreszcie wiadomo, o co chodzi.

Najlepszy byłby tu właśnie bot produkcyjny. Ale jeśli już musisz, to bym kombinował z czymś takim. Partyzantka, ale cóż - nie masz serwera produkcyjnego, to będziesz musiał przeboleć.

Do usmażenia jaje... ups [; Przydadzą się call_user_func" title="Zobacz w manualu PHP" target="_manual + file_exists" title="Zobacz w manualu PHP" target="_manual; raz na jakiś czas będziesz musiał zrestartować skrypt, ale to zależy od zużycia pamięci całego skryptu.

Robisz coś takiego: majstrujesz bibliotekę, którą trzymasz w osobnym katalogu; pliki mają nazewnictwo lib1, lib2, itd. Co teraz? Modyfikujesz wywołanie pętli:
  1. <?php
  2. while(1){
  3.    $counter = 0;
  4.    
  5.    require 'lib/lib'.$counter.'.php';
  6.    
  7.    call_user_func('lib'.$counter);
  8.    
  9.    if(file_exists('lib/lib'.$counter..php)){
  10.        ++$counter;
  11.    }
  12.    
  13. }
  14. ?>

Przy każdej modyfikacji tworzysz nowy plik o numerku większym niż poprzedni. Jeśli istnieje - zostanie wczytany i wykonana funkcja o jego nazwie.

Zaznaczam: rozwiązanie partyzanckie, stosujesz na własną odpowiedzialność.
Go to the top of the page
+Quote Post

Posty w temacie
- tracerout   [php] Dynamiczne includowanie   2.07.2009, 14:02:34
- - wookieb   A może przykład?   2.07.2009, 14:03:20
- - kipero   A nie wystarczy: [PHP] pobierz, plaintext <?php...   2.07.2009, 14:12:09
- - tracerout   Widzisz temat? Wyraznie wpisalem "DYNAMICZNE ...   2.07.2009, 14:16:23
|- - pyro   Cytat(tracerout @ 2.07.2009, 15:16:23...   2.07.2009, 14:17:30
- - erix   CytatPHP pluje sie ze nie mozna ponownie zadeklaro...   2.07.2009, 14:25:21
- - batman   function_exists" title="Zobacz w manualu PHP" targ...   2.07.2009, 14:30:29
- - tracerout   Hmm.. sproboje jasniej: Powiedzmy ze mam dwa plik...   2.07.2009, 14:39:33
- - wookieb   Dlatego jest function exists Kodif(!functi...   2.07.2009, 14:41:51
- - batman   ~tracerout sprawdź podane przeze mnie funkcje. Pow...   2.07.2009, 14:45:15
- - tracerout   KLIK <-- Prosze bardzo, oto jeden z przykladow,...   2.07.2009, 14:55:43
- - batman   Czwarty raz piszę - sprawdź podane przeze mnie fun...   2.07.2009, 15:03:40
- - tracerout   function_exists - sprawdza czy dana funkcja juz is...   2.07.2009, 15:22:42
- - erix   Powiedz, co w praktyce chcesz osiągnąć.   2.07.2009, 15:31:33
- - tracerout   Konkretnie potrzebuje sobie ulatwic tworzenie pewn...   2.07.2009, 15:52:42
- - phpion   A nie możesz na tym samym serwerze utworzyć kopię ...   2.07.2009, 15:58:10
- - tracerout   W tym problem ze nie moge. Gdyby to bylo tak prost...   2.07.2009, 16:00:05
- - erix   No wreszcie wiadomo, o co chodzi. Najlepszy by...   2.07.2009, 16:25:54
- - tracerout   Chyba jednak bede zmuszony uzyc watkow, nie moge m...   2.07.2009, 16:34:44
- - erix   A czemu nie zrobisz pośredniego wywołania do jakie...   2.07.2009, 16:42:07
- - batman   PHP nie był stworzony do takich rzeczy. Ale jest n...   2.07.2009, 17:21:42
- - kipero   Cytat(tracerout @ 2.07.2009, 15:16:23...   2.07.2009, 17:50:38
- - erix   Ale APD jest na mało którym serwerze...   2.07.2009, 19:07:07


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 19:05