Hallo liebe Leute!
ich sitze schon den ganzen Tag vor einem Problemchen und ich weiss echt nicht weiter... ist auch nicht ganz einfach was bei Google zu finden bei so einem derart speziellen Problem
Folgendes Szenario:
Ich will, dass wenn ich auf einen bestimmten Link klicke, im Hintergrund eine php Datei ausgeführt wird und der Output dieser Datei im Memcache gespeichert wird.
Memcache ist installiert und funktioniert.
Wenn ich diese php Datei (product_list_functions.php) im Browser aufrufe, und die benötigten Parameter über GET übertrage, funktioniert alles.
Wenn ich das allerdings wie oben beschrieben, über die exec() Methode versuche, klappt alles, bis auf den Memcache set.
Habe viel rumprobiert und bin mir sicher, dass es an Memcache liegen muss.
Das ist der exec command:
Hier ist die (vereinfachte) product_list_functions.php:
Ganz oben sieht man, optional die GET Parameter, mit denen habe ich die Funktion manuell überprüft.
Nochmal zur Erinnerung: Diese Datei soll per exec() ausgeführt werden, nicht im Browser.
Bei einer Ausführung über exec() wird nichts in den (mem)cache geschrieben (Beim Browseraufruf geht alles).
Ich vermute, dass aus irgendeinem Grund die Memcache Erweiterung nicht geladen wurde. Wie man an den auskommentierten zeilen sieht, habe ich da schon etwas rumprobiert.
Hat jemand ne Idee?
MFG
Chris
ich sitze schon den ganzen Tag vor einem Problemchen und ich weiss echt nicht weiter... ist auch nicht ganz einfach was bei Google zu finden bei so einem derart speziellen Problem
Folgendes Szenario:
Ich will, dass wenn ich auf einen bestimmten Link klicke, im Hintergrund eine php Datei ausgeführt wird und der Output dieser Datei im Memcache gespeichert wird.
Memcache ist installiert und funktioniert.
Wenn ich diese php Datei (product_list_functions.php) im Browser aufrufe, und die benötigten Parameter über GET übertrage, funktioniert alles.
Wenn ich das allerdings wie oben beschrieben, über die exec() Methode versuche, klappt alles, bis auf den Memcache set.
Habe viel rumprobiert und bin mir sicher, dass es an Memcache liegen muss.
Das ist der exec command:
Code:
exec("php product_list_functions.php ".escapeshellcmd("refresh")." ".escapeshellcmd($_GET['id'])." > /dev/null &");
Code:
<? if(isset($_GET['action']) && $_GET['action'] == "refresh" && isset($_GET['id']) && $_GET['id'] > 0 ) { $param1 = $_GET['action']; $param2 = $_GET['id']; } if(isset($argv[1]) && isset($argv[2])) { $param1 = $argv[1]; //Parameter 1 - wird mittels exec() übergeben $param2 = $argv[2]; //Parameter 2 - wird mittels exec() übergeben } if(isset($param1) && $param1 == 'refresh' && isset($param2) && $param2 > 0) { //....arbeite.... das Resultat ist das Array $products } /* if (extension_loaded('memcache')) { $fh = fopen('test.txt', 'w'); fwrite($fh, "test"); fclose($fh); } /* /* if(class_exists('Memcache')) { $fh = fopen('test.txt', 'w'); fwrite($fh, "test"); fclose($fh); } */ $memcache_data = "kategorieliste_".$prodcatid; //Bis zu diesem Punkt passt alles $memcache_obj = memcache_connect('localhost', 11211); /*sämtlicher ab dieser Stelle eingefügter Code wird vom PHP Parser vollkommen ignoriert, ich vermute dass Fehlermeldungen das Skript zum Abbruch bringen (gar nicht so einfach das so nachzuvollziehen, denn wenn ich die Datei per Browser öffne funktioniert ja alles, per exec() bleibt die Ausgabe einfach aus */ $mem_del = memcache_delete($memcache_obj, $memcache_data); $mem_action = memcache_add($memcache_obj, $memcache_data , $products, false, 0); } ?>
Nochmal zur Erinnerung: Diese Datei soll per exec() ausgeführt werden, nicht im Browser.
Bei einer Ausführung über exec() wird nichts in den (mem)cache geschrieben (Beim Browseraufruf geht alles).
Ich vermute, dass aus irgendeinem Grund die Memcache Erweiterung nicht geladen wurde. Wie man an den auskommentierten zeilen sieht, habe ich da schon etwas rumprobiert.
Hat jemand ne Idee?
MFG
Chris
Kommentar