Website kan maar 1 draaiend script aan?
Het is alleen wel zo, dat op het moment dat dat script draait, "alles" vastloopt. Als ik een andere pagina wil laden op dezelfde pagina, dan blijft die laden totdat het eerste script klaar is.
Hoe kan dit? Is dit een instelling in PHP, Apache of in mijn script? Ik heb dit nog niet eerder meegemaakt namelijk.
Ligt eraan wat het script doet, als het je database o.i.d. lokt kan de rest er niet bij en wacht tot dat script klaar is.
Als test probeer ik nu een bestand aan te roepen die geen verbinding maakt, hier staat alleen hoi in. Ook dit werkt niet..
Nu dit niet het geval is zal script 2 in de wachtrij moeten staat totdat script 1 klaar is.
Je zou kunnen overwegen op eerst script 2 te laden en indien je gebruikt maakt van de gegevens uit script 1; deze achteraf te manipuleren. Of je maakt gebruik van een tijdelijke placeholder oid.
Misschien niet direct wat het kan zijn, maar kan je eens kijken naar je CPU-load als je dat script draait... Misschien dat je server op dat moment overbelast is...
Dus het kan inderdaad zo zijn dat je lang moet wachten voordat hij de data binnen heeft.
Maar wat bedoel je met alles vastloopt?
Ik neem aan het laden van je site?
ophalen_data.php
voortgang.php
vanuit index laad ik ophalen_data via ajax. als ik vervolgens voortgang wil bekijken, dan gaat die pagina laden totdat ophalen_data klaar is. Dat is natuurlijk nutteloos.
Ook is het zo, dat op het moment iemand anders op index.php komt terwijl ik data aan het ophalen ben, diegene moet wachten totdat alle data is opgehaald. Dat is gewoon echt stierenstront, zo hoort het niet.
Nico, wat jij nu zegt is dat je maar 1 child van een proces tegelijkertijd kan draaien van PHP. Dat is onder normale omstandigheden toch niet? In dat geval, als je hier bij het opslaan van een reactie, een sleep zou zetten van 10 seconden, kan in die periode niemand meer een pagina openen. Lijkt me niet de bedoeling.
Als jou script veel met de hardeschijf doet kan het ook zijn dat je daar door de resources heen bent
Edit:
Lol, en om mezelf er nou in te hacken is ook niet echt netjes ;-)
Gewijzigd op 21/01/2011 11:42:09 door Chris -
Je moet de sessie sluiten met session_write_close() voordat een andere thread erbij kan.
Ik had dit ook toen ik zo'n meter voor de scriptlib maakte.
Gewijzigd op 21/01/2011 12:23:04 door Pim -
In principe is een progress bar niet zo evident in php, aangezien (het staat hier ergens ook boven) eerst alles in 1 keer wordt afgehandeld. Je kan daar niet zomaar tussen komen.
EDIT:
Okay, I see, het gaat om verschillende requests naar de server; ik dacht wel zo-iets
Gewijzigd op 21/01/2011 12:40:39 door Kris Peeters
Belangrijk is daarbij om in het 'handelingsscript' steeds de sessie af te sluiten met session_write_close(), omdat anders het 'leesscript' er niet bij kan en blijft hangen.
@Pim, dat schijnt inderdaad de oplossing te zijn, bedankt!