Witam, mam problem z zapisem pliku na ftp. Lokalnie działa, jednak gdy uplouduje plik z serwera klienta na ftp pliki dochodzą ucięte. Np. uploaduje pdf 450kb, a przychodzi 300kb - 350kb, losowo. Przy czym np. jpgi przychodzą całe (np. po 2mb), to pdfy mi ucina.

Korzystam wrappera ftp do fopen.
Jak mogę to debugować? Na pewno nie idzie timeout, max_execution jest na godzinę.
Czy może zostawić to i użyć curla albo ftp_connect?

phpinfo: http://www.przeklej.pl/plik/phpinfo-htm-0038kr9ciagh

  1. protected function _uploadToFtp($url, $content)
  2. {
  3. $log = Zend_Registry::get('logger');
  4. $file = fopen($url, 'w');
  5. if (!$file) {
  6. $log->emerg("fopen failed: " . $url);
  7. throw new Exception('Nie udało się uploadować pliku ');
  8. } else {
  9. $log->info("fopen: " . $url);
  10. if ($content && strlen($content) > 0) {
  11. $written_bytes = $this->_writeFile($file, $content);
  12. if (!$written_bytes) {
  13. $log->emerg("fwrite failed");
  14. fclose($file);
  15. throw new Exception('Error writing file to ftp');
  16. } else {
  17. $log->info("Local file length: " . strlen($content) . "; written: " . $written_bytes);
  18. if (strlen($content) == $written_bytes) {
  19. fclose($file);
  20. return true;
  21. } else {
  22. $log->emerg("Write failed");
  23. fclose($file);
  24. return false;
  25. }
  26. }
  27. } else {
  28. $log->info("Empty file written");
  29. fclose($file);
  30. return true;
  31. }
  32. }
  33. }
  34.  
  35. protected function _writeFile($file, $content, $chunk=100000) {
  36. $size = strlen($content);
  37. $count = 0;
  38. for($i=0;$i<$size;$i+=$chunk) {
  39. $count += fwrite($file, substr($content, $i, $chunk));
  40. }
  41. return $count;
  42. }


Rozwiązaniem było wrzucenie sleep(1) po fwrite.