Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ładowanie wszystkich plików odrazu ?
darektbg
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


Witam !
Spotkałem się ostatnio z pewnym frameworkiem Flex, w głównym katalogu były dwa pliki include_all.php i include_list.php :

include_all.php
  1. <?php
  2. define( FLLIB_DIR, realpath( dirname( __FILE__ )));
  3. define( FLPACKAGE_LIB, false );
  4. require_once( 'include_list.php' );
  5.  
  6. foreach( $libClass as $libPath )
  7. {
  8. if( file_exists( FLLIB_DIR . $libPath ) )
  9. {
  10. require_once( FLLIB_DIR . $libPath );
  11.  
  12. if( FLPACKAGE_LIB === true )
  13. {
  14. $cached_classes .= file_get_contents( FLLIB_DIR . $libPath );
  15. $cached_classes .= "nn"; 
  16. }
  17. }
  18. else
  19. {
  20. echo "File " . $libPath. " doesn't exists !n<br>";
  21. }
  22.  
  23. }
  24.  
  25.  
  26. if( FLPACKAGE_LIB === true )
  27. {
  28. file_put_contents( FLLIB_DIR . "/FLPackage.php", $cached_classes );
  29. }
  30.  
  31.  
  32. ?>


include_list.php
  1. <?php
  2. $libClass = array(
  3.  
  4. 'utils/FLStringUtils.class.php',
  5. 'utils/FLArrayUtils.class.php',
  6. 'utils/FLCollection.class.php',
  7. // i kolejne pliki frameworka
  8. );
  9.  
  10. ?>


Z tego wynika, że wszystkie pliki są na początku ładowane i to budzi we mnie zastrzeżenia. Czy pliki powinny być na początku od razu wszystkie ładowane czy dopiero wtedy gdy dany jest potrzebny ?

Pozdrawiam
Darektbg
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


siemakuba:
Cytat
Wszystkie instrukcje require czy require_once znalezione w kodzie w czasie kompilacji zostaną wykonane i pliki zostaną faktycznie załączone. Nawet jeśli taka instrukcja znajduje się wewnątrz instrukcji warunkowej dla której warunek nie jest spełniony, plik zostanie faktycznie załączony. Wynika z tego, że jakiekolwiek dynamiczne ładowanie można zbudować tylko w oparciu o include i include_once.

Totalne bzdury:
1. w manualu pisze ze require i include zachowuja sie identycznie, rozni je jedynie typ bledu wyrzucanego w momencie nie znalezienia pliku.

2. wez sprawdz, wszystkie autoloadery przestaly by dzialac bo w nich jest kod typu:

  1. <?php
  2. require $nazwaKLasy . '.class.php'
  3. ?>


3. powiedz mi jaki plik zostanie zalaczony w czasie KOMPILACJI:
  1. <?php
  2. require $costam . '.php'
  3. ?>
?


Zaden, bo zostanie zaladowany w czasie interpretacji, bo dopiero wtedy bedzie znana wartosc zmiennej $costam


darektbg:
Masz watek o autoloaderach, chyba nawet w php Pro.

Jesli ladujesz wszystko na raz to niepotrzebnie ladujesz czesc plikow (przy zalozeniu ze nie wszystkich zawsze potrzebujesz), ale pliki ladowane od razu szybciej sie laduja
Jesli ladujesz pojedynczo, na rzadanie (autoloaderem), to tracisz czas na przelaczaniu sie php miedzy wykonywaniem skryptu a kompilacja dolaczanych plikow, ale zyskujesz przez niezalaczanie niepotrzebnych plikow.

Kompromisem zdaje sie byc (opisane przeze mnie a wykonane przez hwao -- w tamtym watku o autoloaderach) polaczenie obu rozwiazan -- na sztywno ladowanie plikow zawsze wykorzystywanych, a te zalezne od requestu ladowanie autoloaderem.
Go to the top of the page
+Quote Post

Posty w temacie


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: 28.09.2025 - 19:30