2010-12-15 5 views
1

Ich erhalte häufig diesen Fehler in meinem Apache error_log, wenn ich versuche, ein Bild hochzuladen. Es passiert praktisch jede andere Anfrage. Es ist so zuverlässig ist, dass, wenn Sie klicken Sie zweimal auf das Bild Upload-Seite „Eintragen“, die zweite Anforderung funktioniert:Wie kann ich diesen Passagierfehler bei der Verwendung von Paperclip in Rails vermeiden?

[ pid=53580 thr=0x7fff707b3c20 file=ext/apache2/Hooks.cpp:859 time=2010-12-15 14:13:00.309 
]: Unexpected error in mod_passenger: An error occurred while receiving HTTP upload data:  

The timeout specified has expired (70007) 
    Backtrace: 
    in 'void Hooks::receiveRequestBody(request_rec*, const char*, std::string&)'(Hooks.cpp:1271) 

Dies scheint auch mit attachment_fu mit mir zu geschehen. Irgendeine Idee, warum so viele Anfragen hängen und was ich tun kann, um es zu vermeiden?

+0

Welche Version von Apache und Passenger verwenden Sie? – tadman

+0

Serverversion: Apache/2.2.14 (Unix), Passagier 3.0.0 – AKWF

+0

Ich hatte dieses Problem auch. Benutzt du zufällig Safari auf einem Mac? –

Antwort

2

Sie laufen wahrscheinlich in die Safari Upload Bug. Es hat mich auch einige Male in der Vergangenheit gebissen.

Die Lösung besteht offenbar darin, eine Ajax-Anforderung direkt vor dem Senden des Formulars abzubrechen. Ich verwende das jQuery-Snippet jetzt seit einiger Zeit und es funktioniert gut. Es gibt auch ein Nicht-jQuery-Beispiel in dem obigen Link, wenn Sie plain javascript bevorzugen.

<script type="text/javascript"> 
    $('form').live('submit', function(){ 
    if (/AppleWebKit|MSIE/.test(navigator.userAgent)){ 
     $.ajax({url:"/ping/close", async:false}); 
    } 
    }); 
</script>