Планировщик заданий не загружает файлы на удаленный сервер - PullRequest
0 голосов
/ 31 октября 2019

Я создал планировщик задач, который ежедневно загружает файлы на мой локальный компьютер. но когда я помещаю этот код на удаленный сервер, он не загружает файлы.

По сути, он принимает ответ json, затем загружает файлы, затем извлекает файлы, затем сохраняет их в моей базе данных, но это толькоработает на моем локальном компьютере.

Вот мой код

<?php

ini_set('max_execution_time', '0');

        $url = "https://feeds.example.com/pickup-v2/name/";

        $extract_path = Storage::path('downloads/extract/');
        $folder_path = Storage::path('downloads/');

        $username = 'username';
        $password = 'password';


        try
        {

          $client = new \GuzzleHttp\Client();

            $res = $client->request('GET', $url, [
                'auth' => [$username, $password],

                'headers' => [
                    'Accept'     => 'application/json',
                    'Content-Type'     => 'application/json'
                ],
            ]);

           $responses = json_decode($res->getBody()->getContents());

           foreach ($responses->incrementalFeed as $feed)
           {
                if(Carbon::parse($feed->lastModDt)->format('Y-m-d') == Carbon::today()->format('Y-m-d') && $feed->name !== "is_not_this_file-index.zip " && $feed->name !== "is_not_this_file.zip ")
                {
                     $downloadLink = $url . $feed->name;
                     $ch = curl_init($downloadLink);                                                                      
                    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
                    curl_setopt($ch, CURLOPT_POSTREDIR, 3);          
                    curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);                                                       
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                 
                    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow http 3xx redirects
                    $response = curl_exec($ch); // execute
                    Storage::put('downloads/'.$feed->name, $response);

                    // open zip folders    
                    $zip = new \ZipArchive;
                    $res = $zip->open($folder_path . $feed->name);

                    // extract zip files
                    if ($res === TRUE)
                    {
                      $zip->extractTo($extract_path);
                      $zip->close();

                      $files = glob(storage_path('app/downloads/extract') . "/*xml");
                        foreach($files as $filename)
                        {

                            $xml = file_get_contents($filename);
                            $xml_cleaned = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $xml); 
                            $load_xml = simplexml_load_string($xml_cleaned);

                            // extrac address from each of the listing xml file
                            foreach ($load_xml->Listing as $Listing) 
                            {

                                if($Listing->Address->commonsCountry == "US")
                                {
                                    $listing = new Listing;

                                    $listing->street_address = $Listing->Address->commonsFullStreetAddress;
                                    $listing->city = $Listing->Address->commonsCity;
                                    $listing->state = $Listing->Address->commonsStateOrProvince;
                                    $listing->postal_code = $Listing->Address->commonsPostalCode;

                                    $listing->save();
                                }
                            }
                        }

                    }
                    else
                    {
                        echo 'doh!';
                    }

                }
           }



        }
          catch (ClientException $e) {
                Storage::deleteDirectory('downloads');
          }

          Storage::deleteDirectory('downloads');
...