Milyen nagy legyen egy PHP fájl ?
2016-02-09T23:05:57+01:00
2016-02-10T11:15:25+01:00
2022-07-19T03:53:18+02:00
  • Az összes include, require stb. lassít valamennyit, sőt az autoload logika is, de nem ezektől lesz lassú az alkalmazásod. A Slim egy gyors keretrendszer, szóval én ezen nem aggódnék.

    A korai optimalizálással csak magadat szívatod (főleg, ha szinte lényegtelen dolgokon optimalizálsz). Ha van rá esély, hogy az alkalmazás megnő, és több szervert is igényelhet a futtatása, az már egy sokkal izgalmasabb kérdés, hogy miként oldod meg a skálázást. De az már egy egészen másik történet...
    Mutasd a teljes hozzászólást!
  • Keretrendszerem a Slim, de azt is csak jogosultságkezeléssel bíztam meg.
    Az egész php csak az adatbázisból olvas adatokat PDO segítségével és minden az angularos kliensben kap formát. A php csak a távoli függvényeimet futtatja pl. ilyenlist, olyanlist, +rest jellegű műveletek, import, export, ... .

    Mi az amivel vigyázni kell a php esetében ?
    A fájlok száma tehát indifferens, ha jól értem. Nyugodtan szétszabhatom sok kicsi részre, ha ez javítja a karbantarthatóságot, de ha egyben marad, akkor sem lesz lassabb.

    Még semmi gondom nincs a sebességgel, még csak a kérdés merült fel, hogy mit kell tenni, hogy ne is legyen :)
    Mutasd a teljes hozzászólást!
  • Ha most egy nagy fájlban van minden (ami szervezési szempontból messze nem ideális), akkor a szétdobálásával és autoload használatával garantáltan lassabb lesz. Mellesleg mivel egyetlen fájlról beszélünk, így nyilván keretrendszerről sincsen szó, tehát az egésznek villámgyorsnak kellene lennie. Ha nem az, az egészen mástól lehet (pl. lassú adatbázis műveletek, leterhelt szerver stb.).

    Egyébként azt gyanítom, hogy nagyon furcsa elképzeléseid vannak a sebességről... Mi lenne, ha első körben néznél egy apache benchmarkot? Ha ez is igazolja, hogy valami lassú, akkor nekiállhatsz keresni a szűk keresztmetszetet. Még így is jó eséllyel a lekérdezéseid környékén fogod azt megtalálni, de látatlanban nehéz lenne megjósolni.

    És ha valóban a PHP lenne a szűk keresztmetszet, még mindig belőhetsz egy opcode cache-t.
    Mutasd a teljes hozzászólást!
  • Elsőre furcsa, de a PHP egyik sajátosága, hogy a script sebesége nem függ a fájlok, mappák számátol vagy ezzek méretétől.

    Tehát mondjuk egy MVC modellnek megfelelő struktura azért kell, hogy jól át lehesen látni a programot.

    Ne sporoljunk a mappák,fájlok számával mert nem azon múlik.
    Mutasd a teljes hozzászólást!
  • Amikor az ember elkezd PHP scriptet írni, akkor egyszer elérkezik az a pillanat, amikor megkérdi magától, hogy mekkora legyen a legnagyobb méret és hogyan érdemes kisebb részekre darabolni az alkalmazást, hogy nem kelljen feleslegesen értelmezni az értelmezőnek egy nagy fájlt, aminek a legnagyobb része nem is szükséges a konkrét kéréshez.
    Most konkrétan egy microservices típusú alkalmazásról van szó, aminél amúgy is előny lenne, ha kicsi és gyors maradhatna.
    Nálam eljött ez a pillanat, de sajnos nem tudom rá a választ, mert ez az első ilyen kódom és még nem találkoztam soha személyesen olyan fejlesztővel, aki PHP kódot szokott írni :(

    Próbáljam esetleg OOP-vel és autoload-dal kisebb darabokra szedni az API részt ? 
    Talán meg is lehetne csinálni. A legtöbb API pont nagyon hasonlóra sikeredett: paraméterek ellenőrzése, kis adatbázistúrás, response összeállítása, hibakezelő rész. Ha pedig ennyire egyformák a feladatok, akkor úgyis valami olyan jönne ki a végén, hogy a paramétereket összerakja az ember egy objektumban, aztán meg átadja valami futtató osztálynak. (A legtöbb microframework valahogy így is néz ki.)
    Viszont felmerül bennem a kérdés, hogy miért kell ezeket a futtató objektumokat példányosítás előtt teljesen feltölteni, ha úgyis csak egyetlen API alapján fog lefutni. Nem lehet rávenni a PHP-ét, hogy csak a futtatáshoz szükséges részt értelmezze ? Itt konkrétan arra gondolok, hogy a függvények definíciója mindenképpen futási időt foglal azoknál a részeknél is, amik nem leszek meghívva.
    Gondolhatnám, hogy legyen akkor minden API csoporthoz külön PHP fájlt, és akkor majd kisebbek lesznek a fájljaim.
    Ha ez így van, akkor miért használnak php-hoz olyan alkalmazást, amelyik először mindent egy konkrét gyökérbe rewrite-tol (apache rewrite), aztán ott központilag definiálja a lehetséges elágazásokat és ezután a példányosítás során ismét szétszedik a futást önálló végrehajtási ágakra.

    Nodejs esetén ez teljesen érthető, mert ott egy belépési pont van, de miért terjed a PHP-ban ez a fura logika ?

    Használjak inkább osztályokat és használjam ki az autoloadot ?
    Vagy önálló fájlokba rakjam az egyes összefüggő API  részeket és húzzam be a megfelelő részt require segítségével ?

    Segítsetek megérteni, mi itt a titok, amit nem értek ?
    Mik azok az okok, amiért érdemes ennyi mindent összerakni aztán meg újra szétszedni ?

    Üdv.:
    Jani
    Mutasd a teljes hozzászólást!
abcd