Minek neveznétek? (a kérésekre lefutó php kódokat)
Van egy kis gondom az elnevezésekkel:
Ez alapján a php.exe egy Process, és az egy-egy kérésre lefutó kódok mind-mind egy-egy Thread-et alkotnak.
Ez az elnevezősdi nekem a cachelés miatt fontos. Amikor egy-egy kérésnél a Bootstrap felépíti a környezetet, meg konfigurál ezerrel, az egy csomó erőforrást felemészt. Ezt szeretném megspórolni, úgy, hogy lementem a Bootstrap utáni állapotot, majd egy új kérésnél visszatöltöm azt (osztályokkal együtt).
Valahogy így gondoltam el a nevezéktant:Mondjuk ha a Thread nem talál visszaállítási pontot, akkor lefut a Bootstrap, és létrehoz egy visszaállítási pontot, ha viszont talál, akkor onnan tölti be az osztályokat és az aktuális környezetet, nem pedig egyesével a fájlrendszerből.
Kérdés, hogy jók e ezek az elnevezések? (Mindenesetre én jobbnak találom őket, mint a Zend Framework-ben a BootstrapBootstrap-et...)
■ A process is an executing instance of an application. For example, when you double-click the Microsoft Word icon, you start a process that runs Word. A thread is a path of execution within a process. Also, a process can contain multiple threads.
Ez alapján a php.exe egy Process, és az egy-egy kérésre lefutó kódok mind-mind egy-egy Thread-et alkotnak.
Ez az elnevezősdi nekem a cachelés miatt fontos. Amikor egy-egy kérésnél a Bootstrap felépíti a környezetet, meg konfigurál ezerrel, az egy csomó erőforrást felemészt. Ezt szeretném megspórolni, úgy, hogy lementem a Bootstrap utáni állapotot, majd egy új kérésnél visszatöltöm azt (osztályokkal együtt).
Valahogy így gondoltam el a nevezéktant:
interface Thread
{
public function run();
public function recover(RecoveryPoint $recoveryPoint);
public function getEnvironment();
}
interface RecoveryPoint
{
public function save();
public function load();
public function getEnvironment();
}
Kérdés, hogy jók e ezek az elnevezések? (Mindenesetre én jobbnak találom őket, mint a Zend Framework-ben a BootstrapBootstrap-et...)
Daemont próbáltál már írni?
Nagyon nem jó az
Szóval inkább akkor Process
Hali! Szerintem is process.
Ahm, hát én abban a reményben
Szerintem még a PHP 6
Akkor marad a Process. :-)
Most egyelőre ilyen feladatokat (vagy inkább eseményeket) írtam össze:
Ezt a cache-et végülis úgy is fel lehet fogni, hogy a rendszer állapotát állítjuk vissza egy korábban elmentett formára, vagy mondjuk ha a HTML-t cacheljük, amit visszadob a rendszer, akkor a Response állapotát állítjuk vissza egy mentett formára, és így tovább. Aztán vannak olyan tényezők, amik alapján ki lehet keresni ezt a korábban mentett verziót, ilyen mondjuk a kérés, a jogosultságok, stb... Ilyen elágazások a verziókezelőkben is vannak, úgyhogy utánanézek, hogy ők milyen elnevezéseket használnak a témában.
A Memento-val az a baj, hogy
A RecoveryPoint helyett
Egyébként még nem próbálkoztam többszálú dolgokkal meg deamon írással, nyilván azért nem stimmelnek az elnevezéseim, mert nem értek hozzá :-)
Itt igazából arról van szó, hogy amikor lefut a bootstrap, akkor betöltődik egy csomó osztály, meg létrejön a környezetben egy csomó erőforrást menedzselő program. Aztán meg létrejön a Session, meg elkezd dolgozni a Distributor, hogy megtalálja a Controller-t, ami a kérést fogja kezelni.
Na most a Session létrejötte előtti szakasz csak akkor változik, ha cserélgetjük a rendszer fájlokat, szóval azt érdemes betenni egyetlen fájlba, vagy a memóriába, és onnan visszatölteni.
Persze a többit is érdemes cachelni, csak az a rész már elágazik jogosultságtól, erőforrás használattól, meg minden mástól függően, szóval ott már bonyolultabb dolog a cachelés...
Szerintem érdemes Janoszen Y
Meglátjuk :-)Tákolok egy új
Tákolok egy új keretrendszert, mert nem érzem úgy, hogy a meglévők passzolnának az elképzeléseimhez. Mindig ott rontom el az eszköz keresést, hogy belenézek a forrásba :D
szerk:
Jah azt a cikket olvastam, de amikor rákérdeztem egy-két alapvető kérdésre, akkor elküldtek a wikipediára :D
Egyébként ha jól értem, akkor van a process, ami valamilyen oprendszer alatt éppen futó program. Van a daemon, ami olyan program, amihez nincs ablak, csak úgy a háttérben futogat (gondolom megegyezik a windows-nál a service-el, csak a service-nek gondolom szabványos a felülete). A processen belül meg ha jól gondolom vannak thread-ek, amik párhuzamosan futnak, szóval a process a kapott processzor idejét köztük osztja szét.
Szóval itt az a kérdés, hogy amikor bejön a http szerverhez egy kérés, akkor új process vagy új thread jön e létre, vagy esetleg valami más?
Asszem kicsit jobban bele kell ásnom magam a php script lifecycle kérdésbe, hogy erre választ kapjak...
Attól függ
Ami a "szabvány" webkiszolgálást illeti, két model van. Vagy mod_php fut a rendszer alatt, vagy FastCGI. Az első esetben az Apache MPM függvényében vagy processt vagy threadet indít (inkább az előbbi) és abban szolgálja ki a beállított mennyiségű kérést. FastCGI-nél egy spawner indítgat a háttérben PHP processeket a kiszolgálásra, amikre a webszerver rácsatlakozik. Ez esetben irreleváns, hogy a webszerver mit csinál, mert a PHP-t nem érinti, az mindenképp processeket fog indítgatni.
Off: Miért érzem úgy, hogy a projektjeid sosem annyira gyakorlati jellegűek, mint inkább kísérletezni akarsz ezekkel? Ha ilyen projektre áhítozol, érdemes lenne elmenned a DotRollhoz dolgozni, mert ugyan most távozom külföldre, pont egy olyan rendszeren dolgozik a csapat, amelyik async IO looppal működik.
Hát az elmélet sokszor jobban
Tannenbaum
+1
Nektek hogy van időtök ennyit
No leszedtem azt a könyvet, de előbb clean code lesz, amit végigtolok... Azt hiszem akkor Thread helyett meg maradok az Application elnevezésnél, amíg nem találok ki valami jobbat...
..
Vettem már én is pár könyvet,
Gondolom mennyire legalisan
Masik, hogy szerintem itt egy kis felreertes van(vagy en ertelek felre). A kerdesed igazabol arra iranyult hogy minek nevezd el azokat a reszeket a keretrendszeredben amik felallitjak a rendszert, betoltik a config-okat, stb. Ezeket te csak ritkan szeretned meghivni es cache-ben tarolni. Ennek kb 0 koze van a threadhez is, meg a processhez is szerintem.
Egyebkent ha keretrendszert fejlesztesz akkor szerintem, de a zend es symfony mintajan indulj el, ahol nagyon sok eroforras a rendszer felallitasa, hanem probalj meg valami kevesbe resource-hungry megoldast.
Az oldal a pdfchm.net,
A kérdésem nem erre irányult. Ami feállítja a rendszert az a Bootstrap... Engem az érdekel, hogy magát a teljes "rendszert" minek nevezzem. Egyelőre annál a változatnál maradtam, hogy a Server a teljes rendszer, ami képes Application-öket futtatni. Az Application-ök esemény kezelőket regisztrálnak be a szerveren. Van még ezen kívül a Client, amit kiszolgál a Server miután az alkalmazásokat elindította.
pl egy webshop esetében az index.php valahogy így néz ki:
Ha daemont szeretnél írni,
Nem számít