2010-12-29 3 views
0

ich verwende Rubin 1.8.7 und Rails 2.3.8 und mein Problem ist wie folgt: -Gemeinschafts-Array in Schienen Rubin Gewinde auf Nginx

Ich habe 6 verschiedene Web-Dienste über AJAX rufen Ergebnisse zu erhalten und in Am Ende werden alle Ergebnisse in einem globalen Array aufgefüllt. Die Ergebnisse dieser Webdienste werden normalerweise zu zufälligen Zeiten zurückgegeben (alle diese Webdienste geben normalerweise Ergebnisse innerhalb von 6 bis 15 Sekunden zurück).

Ich verwende ein globales Array sagen @@ Autos, um die erzeugten Ergebnisse zu speichern. Immer wenn einer der Ajax-Calls seine Verarbeitung beendet, findet er heraus, dass die @ Autos null sind.

Dies funktioniert lokal auf der Entwicklungsmaschine mit Mongrel aber auf Nginx seine Probleme erstellen.

Irgendwelche Gedanken?

Antwort

1

Dies ist wirklich nicht, was globale Variablen sind und ich bin nicht überrascht, dass es nicht zuverlässig funktioniert, wenn Sie diese Technik verwenden. Sie sollten in Betracht ziehen, die Daten an anderer Stelle zu speichern (sei es eine normale Datenbank oder etwas wie redis, das sich gut für die einfache Array-Speicherung eignet). Auf diese Weise sind die Daten den verschiedenen Threads weniger zugeordnet.

+0

Vielen Dank für Ihre Antwort. In meinem Fall muss ich jedoch die Webdienste abfragen, um das gewünschte Ergebnis zu erhalten, und nachdem ich eine Extraktion über diese Daten vorgenommen habe, stelle ich sie den Benutzern zur Verfügung. Ich muss diese Daten nicht wirklich speichern, da sich die Änderungen/Gültigkeitsänderungen in ein paar Stunden ändern. Dies scheint ein Problem mit Nginx- und Rubinschienen zu sein. Sieht so aus, als ob nginx nicht mit Rails threadsicher ist und es keine Lösung für dieses Problem gibt? –