PHP incude-al optimálisabb e?

PHP incude-al optimálisabb e?
2006-11-28T12:46:09+01:00
2006-12-01T09:47:15+01:00
2022-10-30T19:40:35+01:00
  • Nem kell ezzel szívni
    Kell egy config.php, amit relatívan rántasz be.
    Ott definiálod a BASE-t, és onnantól mindent BASE . 'path/subpath/file.ext' formában elérsz...

    Viszont sokkal gyorsabban értelmezi, mint az relatív elérési utat.

    (Persze ennek mondjuk nagy terheltségű sitenál van lényege... egy kis webshopnál nincs különösebb jelentőssége).
    Mutasd a teljes hozzászólást!
  • Én meg pont az ellenkezőt vallom, kifejezetten utálom azokat a letöltött anyagokat, amelyek abszolut eléréseket tartalmaznak. Sőt szerintem aki ilyet csinál, az más galádságra is képes
    Huh, hogy mennyit szívtam már ezekkel, bocs de tényleg érthetetlen számomra, hogy mi szükség van ezekre
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Én a rendszer vázát úgy szoktam kivitelezni, hogy az adott modulok külön fájlban vannak.
    A vezérlő paraméter ( tipikusan $_GET[ 'do' ] ) pedig elágaztat.
    De nem switch/if, hanem:

    common.php
    $do = ( @$_REQUEST[ 'do' ] ? $_REQUEST[ 'do' ] : '' ); function control() { if( function_exists( $do ) ) { $do(); } else { defaction(); } }

    users.php?do=list
    include( 'common.php' ); control(); function defaction() { ... } function list() { ... }

    Ha include-okat használsz, akkor érdemes abszolút elérési utat megadni. Sokkal gyorsabb, mint a relatív.
    Pl. a common.php-ben definiálsz egy BASE konstanst, aztán így include-olsz:
    include( BASE . 'modul.php' );
    Mutasd a teljes hozzászólást!
  • hat ha a tavoli filebehuzas engedelyezve van. :)
    amugy ha akartok vicces hibauzi nelkuli segfaultot latni php ertelmezotol, akkor probaljatok ki ezt a kodot:
    PHP4

    echo "Ezt miert nem latod? :)"; class teszt{ var $teszt; function teszt(){ $teszt=new teszt; } } $teszt=new teszt;

    PHP5 alatt pedig a __construct-ba kell tenni.
    semmi timeout vagy error/notice.
    csak elhal a php :)

    Tyrael
    Mutasd a teljes hozzászólást!
  • "azert elotte $command valtozot erossen ajanlott vizsgalni, nehogy veletlenul vegtelen rekurzioban includeoljunk. :D"


    Hát ha még csak a végtelen rekurzió lenne a legnagyobb baj benne, az úgy is timeout-ot csinál :)))

    De ha nem vigyázol vele, akkor egy hatalmas security hole lehet belőle ugyanis.
    Mutasd a teljes hozzászólást!
  • Miután megírtam, amit írtam megnyitottam editre, hogy ezt beletegyem, de gondoltam kíváncsi leszek ki köt majd bele...Grat! Te vagy az;)

    Kolléga már ezerrel nyomta rá az ifeket, ezért gondoltam, hogy az már jócskán ellenőrizve van, hogy abba mi kerülhet bele.

    Köszi, hogy javítottál!

    Tyrael
    Mutasd a teljes hozzászólást!
  • if (file_exists($command.".php")){ include($command.".php"); }
    azert elotte $command valtozot erossen ajanlott vizsgalni, nehogy veletlenul vegtelen rekurzioban includeoljunk. :D

    Tyrael
    Mutasd a teljes hozzászólást!
  • Jaja ezt mondom én is, hogyha lassulna az alkalmazás, ez lenne a legutolsó, amit megnéznék.
    Mutasd a teljes hozzászólást!
  • Én az uw és az Extra szerverén mértem egyszer ilyennel:

    <? for(i=1;i<1000;i++) { echo "<table><tr>......</tr></table>"; }; ?>
    Illetve:
    <? for(i=1;i<1000;i++) {?> <table><tr>......</tr></table> <?}; ?>

    Persze teljes táblázattal és nagyobb ciklussal, mérettem a lefutási idejét. (Tehát a php elején és végén lekértem az időt.)
    A második mindig gyorsabb volt.
    ---

    Persze ha minden második karaktert a php ír ki, akkor célszerűbb az echo: De amikor valaki egy teljes üres form-ot (és a tesztelő js-t) írja ki php-ból, amikor egy fia php nincs benne, de már nem tudja, hogy mikor a ", \", ', \'-ok már nem is tudja, hogy hol tart, az brrrr
    Mutasd a teljes hozzászólást!
  • A Nagy Fekete PHP Könyv meg egyenesen azt állítja, hogy ideje lenne elfelejteni ezt a terhelős-printelős dolgot, mert a jelenlegi szervereknek nagyjából tisztára nyóc, hogy a csupasz webszerver nyomja-e ki a hötömölöt, vagy a péhápé interpretálja (magyarán: átereszti magán, mint szűrő a teát) és nyomatja ki.
    De nemtom, mert nem mértem még sohasem
    Mutasd a teljes hozzászólást!
  • Ezt szerintem egy programozó úgy csinálná meg, hogy
    switch($command){ case "bevezeto":{ include("bevezeto.php"); break; } case "login":{ include("login.php"); break; } ... default : "" }

    De ebben az egyszerű esetben inkább:
    if (file_exists($command.".php")){ include($command.".php"); }
    Mutasd a teljes hozzászólást!
  • direkt írod így az
    else if
    -eket vagy nem szereted az
    elseif
    -et?
    Mutasd a teljes hozzászólást!
  • Nem rossz az elgondolásod. Én is szívesen alkalmazom az include -okat. Soha nem volt semmilyen terhelés problémám, friss, áttekinthető, könnyen karbantartható kódot lehet készíteni vele. Pl. Micu kódja egy kicsit megcsavarva:
    <? include ("allitsuk_csak_be_a_command_ot.php"); if (command == "bevezeto") {include "bevezeto.php";} else if (command == "login") {include "login.php";} else if (command == "logout") {include "logout.php";} else if (command == "mail") {include "mail.php";} ?>
    Ezzel a témával foglakozik nagyjából ez a CIKK is.
    Sok sikert!
    Mutasd a teljes hozzászólást!
  • De:
    - Szeretnék fejlődni... Még ha lassan is...
    - Szeretnék jó gyerek lenni és kímélni a szolgáltatóm szerverét... sok kicsi...
    Mutasd a teljes hozzászólást!
  • Szerintem még egy jó darabig nem leszel azon a szinten, hogy akár csak elméleti szinten is foglalkoznod kéne a php értelmező terhelésével... Nem az elágazások meg az includok szokták megborítani az uw.hu-s portálrendszereket :)
    Mutasd a teljes hozzászólást!
  • És most mondjárt jön valaki, aki ajánlja majd a template-ezést - teljes joggal :)
    Mutasd a teljes hozzászólást!

  • Szóval akkor eddig nagyon gyökér módon csináltam...
    Még jó, hogy eddig nem voltak igazán hosszú szövegrészek, amiket printelni kellett...
    És még jó, hogy rákérdeztem most, hogy lesznek...
    Mutasd a teljes hozzászólást!
  • A printelésnél szerintem mindenképpen jobb.

    de hogy bonyolítsam, így is lehet:

    if (feltétel) { ?> Ez itt tiszta html (javascript) <? } else { ?> Ez is tiszte html <? {;?>
    Mutasd a teljes hozzászólást!
  • Szóval egy honlapnál elágazások esetén (if, switch) felmerül, hogy az elágazásokban különböző adatokat szeretnék megjeleníteni az oldalon...
    És mivel nem jó sok HTML anyaggal terhelni a php értelmezőt feleslegesen, az lenne a kérdésem, hogy az include-al nem terhelem e...

    Azaz if-en belül nem printelek egy oldalnyi szöveget, hanem inculde és az include-olt fileba csak a html kerül...

    Gondolom kicsit óvodás kérdés, de hát kezdő vagyok még és mivel az include php-n belül van, nem tudom, mennyire terheli az értelmezőt... Jobban e vagy kevésbé, mint ha printelném...
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd