Dunaevlad
@Dunaevlad

Как правильно задать условие?

Ребят всем привет!

Есть скрипт, котрый скачивает файл, размером 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]);
?>
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@Stalinko
PHP'шник и фрилансер до мозга костей
if (filesize($filePath) === 8_883_232) {
  echo 'true';
} else {
  echo 'false';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы