ftpwriter.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. include '../db.php';
  3. //connect
  4. $conn = ftp_connect(FTP_HOST, FTP_PORT);
  5. if(!ftp_login($conn, FTP_USER, FTP_PASS))
  6. {
  7. echo "Unable to login to FTP\n";
  8. return;
  9. }
  10. ftp_pasv($conn, true);
  11. ftp_chdir($conn, FTP_DIR);
  12. $stmt = $dbh->prepare(
  13. "SELECT DISTINCT id_company, name, ftp_directory
  14. FROM company
  15. WHERE id_company IN
  16. (
  17. SELECT DISTINCT(id_company)
  18. FROM file_row_update
  19. INNER JOIN file_row USING(id_file_row)
  20. INNER JOIN `file` USING(id_file)
  21. WHERE date_modified > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY)
  22. OR file.date_processed > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY)
  23. UNION
  24. SELECT DISTINCT(id_company)
  25. FROM `file`
  26. INNER JOIN file_row USING(id_file)
  27. WHERE id_file_row IN
  28. (
  29. SELECT id_file_row
  30. FROM file_row_update
  31. WHERE WEEK(date_modified) = WEEK(CURRENT_TIMESTAMP)
  32. UNION
  33. SELECT id_file_row
  34. FROM file_row
  35. WHERE WEEK(date_processed) = WEEK(CURRENT_TIMESTAMP)
  36. )
  37. )");
  38. $stmt->execute();
  39. $companies = $stmt->fetchAll(PDO::FETCH_ASSOC);
  40. $num_companies_processed = 0;
  41. foreach($companies as $company)
  42. {
  43. $num_companies_processed++;
  44. echo "processing company $company[name]...";
  45. $id_company = $company['id_company'];
  46. $week_number = date('W');
  47. //make the csv in memory
  48. $f = fopen('php://temp/maxmemory:1048576', 'w');
  49. getRowsByCompanyCSV($id_company, $f, $week_number);
  50. rewind($f);
  51. $remote_filename = $company['ftp_directory'] . '-' . date('Y-W') . '.csv';
  52. if(!ftp_fput($conn, $remote_filename, $f, FTP_ASCII))
  53. {
  54. echo "ERROR uploading file to ftp.\n";
  55. return;
  56. }
  57. echo "SUCCESS\n";
  58. }
  59. ftp_close($conn);
  60. echo "DONE\n";
  61. ?>