2016-03-21 5 views
1

Ich habe eine Anfrage, die die Sitzung verwendet, um zu überprüfen, ob ein Benutzer authentifiziert ist. Dann mache ich von dieser Anfrage eine cURL-Anfrage (die authentifiziert werden muss) unter Verwendung der Sitzungsvariablen.PHP cURL Anfrage verursacht Session Deadlock

Das Problem besteht darin, dass die erste Anforderung wartet, bis die cURL-Anforderung abgeschlossen ist, und die cURL-Anforderung die Sitzung erst beginnen kann, wenn die anfängliche Anforderung abgeschlossen ist. Ich kam in einen Deadlock, der beide Anfragen zum Timeout führte.

Gibt es einen Weg um dies?

+1

Lassen Sie die Sitzungsdatei los, bevor Sie versuchen, sie aus einem anderen Prozess zu lesen. –

Antwort

1

Nach dem Aktualisieren der Sitzung im ersten Skript verwenden, um die Sperre aus der Datei zu entfernen.

In PHP 7 können Sie die Sperre sofort nach dem Lesen entfernen:

session_start([ 
    'cookie_lifetime' => 86400, 
    'read_and_close' => true, 
]); 

HHVM tut dies standardmäßig.

Ein noch besserer Ansatz wäre die Verwendung eines nicht-lockenden Session-Handlers wie Memcache.