Я создал планировщик задач, который ежедневно загружает файлы на мой локальный компьютер. но когда я помещаю этот код на удаленный сервер, он не загружает файлы.
По сути, он принимает ответ 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');