php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 12-04-2012, 20:48
Teljo
 Registrierter Benutzer
Links : Onlinestatus : Teljo ist offline
Registriert seit: Apr 2012
Beiträge: 3
Teljo ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit MemCached nach exec() Aufruf einer PHP Datei

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:

Code:
exec("php product_list_functions.php  ".escapeshellcmd("refresh")." ".escapeshellcmd($_GET['id'])." >  /dev/null &");
Hier ist die (vereinfachte) product_list_functions.php:

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); 
} 
?>
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

Geändert von Teljo (12-04-2012 um 21:10 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-04-2012, 21:30
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Vermute, dass deine CLI-Version anders kompiliert wurde als das Modul für den Webserver. Mach mal eine PHP-Datei, die dir nur phpinfo(); ausgibt und ruf diese mal über Kommandozeile und mal über den Browser auf und achte auf Unterschiede bei den geladenen Modulen.

Im übrigen ist es eine gute Idee mögliche Fehlermeldungen oder Debug-Ausgaben (die man ja auch einsetzen könnte) in den Abfall zu verschieben.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #3 (permalink)  
Alt 13-04-2012, 12:51
Teljo
 Registrierter Benutzer
Links : Onlinestatus : Teljo ist offline
Registriert seit: Apr 2012
Beiträge: 3
Teljo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Quetschi


Ja genau daran scheints wohl zu liegen. Bei der über die Kommandozeile ausgeführte phpinfo(); Datei wurde memcache nicht als extension angezeigt. Habe eben den hoster kontaktiert, was man da machen kann.

Oder hast du eine Idee?
Mit Zitat antworten
  #4 (permalink)  
Alt 13-04-2012, 13:13
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Du kannst versuchen beim Aufruf den Pfad zur php.ini der Webserverkonfiguration zu übergeben.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #5 (permalink)  
Alt 13-04-2012, 15:19
Teljo
 Registrierter Benutzer
Links : Onlinestatus : Teljo ist offline
Registriert seit: Apr 2012
Beiträge: 3
Teljo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, hier is die Lösung:

Code:
exec("php53 -c ORT-DER-PHP-INI product_list_functions.php $param1 $param2 > /dev/null &");
thx all
Mit Zitat antworten
  #6 (permalink)  
Alt 13-04-2012, 15:25
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Crossposting Problem mit MemCached nach exec() Aufruf einer PHP Datei - php.de
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #7 (permalink)  
Alt 13-04-2012, 20:58
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von streuner Beitrag anzeigen
Crossposting
Nicht schimpfen. Er liefert wenigstens eine Lösung hier ab. Könnte auch anderen helfen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #8 (permalink)  
Alt 14-04-2012, 13:06
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Du Diplomat!
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Direkter Aufruf einer (Pdf)Datei verhindern! jansen84 PHP Developer Forum 6 18-07-2007 08:30
Problem in PHP mit Aufruf von einem Skript mikl76 PHP Developer Forum 2 26-11-2006 19:28
Probleme beim Ausführen einer Batch-Datei mit exec Entenman PHP Developer Forum 6 01-11-2004 18:43
Aufruf einer jar-Datei aus PHP alkaluropus PHP Developer Forum 1 15-12-2003 13:46
php crasht nach exec befehl Solarius PHP Developer Forum 5 15-08-2003 12:15

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:39 Uhr.