Ik zit met de volgende situatie:
Ik ben de frontend van een zoekmachine aan het bouwen. Deze bestaat uit 2 PHP scripts: index.php en search.php.
index.php doet niets meer dan een bijna lege XML file transformen met XSLT, hetgeen resulteert in een Google achtige pagina met een formpje erop. Na het submitten van het formuliertje wordt index.php wederom aangeroepen en staan de resultaten daar, verdeeld over meerdere pagina's.
search.php maakt een SOAP-call naar een andere server die het eigenlijke zoekwerk verricht. deze voert de query eenmalig uit, en geeft een referentie naar de query terug. door een volgende SOAP-call, waarin ik de referentie opgeef, samen met een $start en een $end, kunnen een x aantal resultaten worden teruggegeven. op deze manier hoeft niet voor elke resultaten-pagina de database-query opnieuw worden uitgevoerd. search.php geeft de resultaten terug als XML.
de resultaten van search.php worden dynamisch in de XML tree geladen dmv de XSLT functie document('http://host/search.php?q=blaat&start=25'). Ik gebruik Sablotron, dus ik heb een scheme handler gemaakt voor http, die mbv fopen() search.php opent en netjes de XML file teruggeeft tijdens het XSLT proces.
het probleem is nu, dat search.php de query-reference moet onthouden wanneer een gebruiker naar een volgende pagina van resultaten gaat, zodat niet de query opnieuw hoeft worden uitgevoerd, maar slechts een deel van de result-set moet ophalen van een query die al gedaan is (noot: hoe dat allemaal aan de andere kant van de SOAP verbinding gaat weet ik niet, ik weet alleen dat ik op deze manier te werk moet gaan)
ik dacht dus wel even handig van sessies gebruik te kunnen maken. niets is echter minder waar. bij elke fopen(phpurl) wordt doodleuk een nieuwe sessie gemaakt, php weet niet dat het request viavia uit dezelfde sessie komt. als ik handmatig het session id doorpass in de url die ik met fopen aanroep, krijg ik een HTTP request failed.
is er een manier om zodanig met fopen (of fsockopen) om te gaan op zo'n manier, dat php 'denkt' dat zowel m'n normale requests als m'n requests die vanuit een normale request via f(sock)open gaan, tot dezelfde sessie behoren?
ik weet overigens zeker dat hier het probleem ligt, want als ik search.php gewoon vanuit m'n browser aanroep gaat het wel goed qua sessies...
Ik ben de frontend van een zoekmachine aan het bouwen. Deze bestaat uit 2 PHP scripts: index.php en search.php.
index.php doet niets meer dan een bijna lege XML file transformen met XSLT, hetgeen resulteert in een Google achtige pagina met een formpje erop. Na het submitten van het formuliertje wordt index.php wederom aangeroepen en staan de resultaten daar, verdeeld over meerdere pagina's.
search.php maakt een SOAP-call naar een andere server die het eigenlijke zoekwerk verricht. deze voert de query eenmalig uit, en geeft een referentie naar de query terug. door een volgende SOAP-call, waarin ik de referentie opgeef, samen met een $start en een $end, kunnen een x aantal resultaten worden teruggegeven. op deze manier hoeft niet voor elke resultaten-pagina de database-query opnieuw worden uitgevoerd. search.php geeft de resultaten terug als XML.
de resultaten van search.php worden dynamisch in de XML tree geladen dmv de XSLT functie document('http://host/search.php?q=blaat&start=25'). Ik gebruik Sablotron, dus ik heb een scheme handler gemaakt voor http, die mbv fopen() search.php opent en netjes de XML file teruggeeft tijdens het XSLT proces.
het probleem is nu, dat search.php de query-reference moet onthouden wanneer een gebruiker naar een volgende pagina van resultaten gaat, zodat niet de query opnieuw hoeft worden uitgevoerd, maar slechts een deel van de result-set moet ophalen van een query die al gedaan is (noot: hoe dat allemaal aan de andere kant van de SOAP verbinding gaat weet ik niet, ik weet alleen dat ik op deze manier te werk moet gaan)
ik dacht dus wel even handig van sessies gebruik te kunnen maken. niets is echter minder waar. bij elke fopen(phpurl) wordt doodleuk een nieuwe sessie gemaakt, php weet niet dat het request viavia uit dezelfde sessie komt. als ik handmatig het session id doorpass in de url die ik met fopen aanroep, krijg ik een HTTP request failed.
is er een manier om zodanig met fopen (of fsockopen) om te gaan op zo'n manier, dat php 'denkt' dat zowel m'n normale requests als m'n requests die vanuit een normale request via f(sock)open gaan, tot dezelfde sessie behoren?
ik weet overigens zeker dat hier het probleem ligt, want als ik search.php gewoon vanuit m'n browser aanroep gaat het wel goed qua sessies...