Ребят всем привет!
Есть скрипт, котрый скачивает файл, размером 2 gb, парсит
и записывает его в базу данных. Я хочу задать в код условие, чтобы,
он парсил файл, если только файл нужного размера.
На Python это так:
import os
file_size = os.path.getsize("ddt.mp3")
if file_size == 8_883_232:
print('true')
else:
print('false')
А как на php? C php не знаком просто.
Мне надо закинуть его в этот код:
<?php
error_reporting(E_ERROR);
//ini_set('display_errors',1);
define('root',__DIR__.DIRECTORY_SEPARATOR);
require 'vendor/autoload.php';
use Models\Database;
use Models\Item;
use Illuminate\Database\Capsule\Manager as Capsule;
$db = new Database();
function mtLog($str,$isDie = false)
{
mail('tsyplakov@ikar-soft.com','ImportLog',$str);
echo $str."\'n";
if($isDie)
exit;
}
function download($dt=null)
{
$date = date('Ymd',time()-24*60*60);
$date = $dt ? $dt : $date;
$fileName = root.$date.'.csv';
$fh = fopen($fileName, 'w');
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_URL, 'http://opendata.fssprus.ru/7709576929-iplegallist/data-'.$date.'-structure-20200401.csv');
curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
fflush($fh);
fclose($fh);
if($status == 404)
{
@unlink($fileName);
return false;
}
return $fileName;
}
$filePath = download();
if(!$filePath)
mtLog('Нет файла',true);
$fo = fopen($filePath, 'r');
$rowIndex = -1;
$CountItems = 2000;
$Items = [];
$start = time();
while (($data = fgetcsv($fo)) !== false)
{
++$rowIndex;
if(!$rowIndex)
continue;
if($rowIndex == 1)
{
var_dump(Capsule::table('items')->truncate());
}
if(count($data) < 14)
continue;
$Items[] = [
'debtor' => $data[0],
'address' => $data[1],
'realaddress' => $data[2],
'enforcementNumber' => $data[3],
'dateOfArousal' => strtotime($data[4]) ? date('Y-m-d',strtotime($data[4])) : null,
'executiveSummaryNumber' => $data[5],
'typeofExecutiveDocument' => $data[6],
'executiveDate' => strtotime($data[7]) ? date('Y-m-d',strtotime($data[7])) : null,
'executiveDocumentNumber' => $data[8],
'executiveDocumentRequirements' => $data[9],
'subjectOfExecution' => $data[10],
'amountToBePaid' => (float)$data[11],
'balanceOwed' => (float)$data[12],
'departmentOfBailiffs' => $data[13],
'bailiffDepartmentAddress' => $data[14]
];
if(count($Items) >= $CountItems)
{
Capsule::table('items')->insert($Items);
$Items = [];
}
}
if($Items)
Capsule::table('items')->insert($Items);
mtLog($rowIndex ? 'В базу добавлено '.$rowIndex.' объектов' : 'Не удалось скачать файл, или файл оказался пустым');
fclose($fo);
var_dump(unlink($filePath));
file_put_contents(root.'update',date('d.m.Y'));
$sec = time()-$start;
var_dump([$sec,$sec/60]);
?>