function generateTFilter($numT) {
$filter = "";
for ($i = 1; $i <= $numT; $i++) {
$filter .= " OR t{$i} > 0";
}
return ltrim($filter, " OR");
}
$numT = 17; // Укажите нужное количество переменных t
$sql = "SELECT * FROM products WHERE category = ? AND (" . generateTFilter($numT) . ")";
for ($i = 0; $i < $count; $i++) {
sleep(5); // Я бы тут поигрался с sleep.
// $html = curl_get($silka[$i]); // Ссылка на сериал
// А вот тут я бы проверял, что запрос дошел. Можно кастомизировать, но в простом случае
$stopAsking = false;
$countRequests = 0;
while (!$stopAsking) {
try {
$html = curl_get($silka[$i]); // Здесь в функции выбрасывайте исключение и ловите его с помощью https://www.php.net/manual/en/function.curl-error.php
$stopAsking = true;
} catch (Exception $e) {
sleep(1); // Подвязать логику слипа на количество запросов
$countRequests++;
if ($countRequests > 5) {
$stopAsking = true; // И прерывать действие части скрипта, которая делает запрос на сервер.
}
}
}
if ($countRequests > 5) {
continue;
}
$dom = str_get_html($html); // Парсить страницу
$finds = $dom->find('.added-info');
foreach ($finds as $find) {
$tfind = trim($find->plaintext);
if ($series[$i] === $tfind) {
echo $id[$i];
sleep(5); // У вас это запускается только в случае, если будет finds. В принципе, sleep тут не нужен уже, так как выработаете с готовой страницей. Но, например, если $finds = $dom->find('.added-info'); - не будет, то следующий запрос будет моментален.
} else {
$sql = "UPDATE `seria` SET `series` = '$tfind' WHERE `seria`.`id` = $id[$i]";
$mysql->query($sql);
message_to_telegram("Вышла новая серия" . $series[$i] . $silka[$i]);
echo $id[$i];
}
}
}
Yii::$app->session->setFlash('success', 'Операция выполнена успешно!');
("хорошо" or "прекрасно" or "отлично" or "пойдет")
$model = new JobOrderDetail();
$model->load($arrayData, ''); // '' = formname or empty string
if ($model->validate()) {
// все данные корректны
} else {
// данные не корректны: $errors - массив содержащий сообщения об ошибках
$errors = $model->errors;
}
$model = new Model;
foreach ($array as $key => $value) {
$model->$key = $value; // правда надо проверить на существование property в модели.
}
Тем не менее сейчас я столкнулся с тем, что на собеседованиях начинают спрашивать что серьезного доводилось делать на чистом php - без фреймворков и мои ответы на их вопросы касательно парсеров, скиптов для обмена данными остаются неубедительными. Даже дальше кадровиков иногда дело не уходит.
Еще спрашивюат какие патерные проектирования используешь, придерживаешься ли принципов Solid?
А сейчас я не только ради прохождения собеседований, но и ради повышения скилла хотел бы углублённо погрузиться в написание кода без фреймворков. Но как к этому подойти? Не писать .же бложег или интернет-магазин на чистом php?
Может начать с изучения PSR
от него начать писат простой psr фреймворк как это делал Дмитрий Елисеев?
Или просто взять симфони и начать писать на ней чтоб понять суть вещей глубже и потом козырять своими скиллами на собеседованиях, что, мол, ,я тут на Симфони пишу, а вы мне тут вопросы для школьников задаёте?
Короче расскажите мне про роудмеп погружения в php. Теорию я и так знаю - книги по php читал.
composer require guzzlehttp/guzzle
<?php
require 'vendor/autoload.php'; // Путь к файлу autoload.php из установленного Guzzle через Composer
use GuzzleHttp\Client;
$baseUrl = 'https://mc.api.sberbank.ru/prod/tokens/v3/oauth';
$rqUID = '25Ec70328e2CE4DF39e828E1dF75EFa0';
$authorization = 'Basic MTgwYmYzNTItNDlhZC00MGVhLTgyYmItMDcwMTRiMjdjODQ5OjUwM2NhNmUwLWE5OWEtNDYzZC05OTIzLWJlZWUzYjVhYzYzNA==';
$scope = 'https://api.sberbank.ru/qr/order.create';
$certPath = '/absolute/path/to/certif.p12';
$certPassword = 'RiKZcN3Z';
$cacertPath = '/absolute/path/to/russian-trusted-cacert.pem';
$client = new Client();
$response = $client->request('POST', $baseUrl, [
'headers' => [
'RqUID' => $rqUID,
'Authorization' => $authorization,
'Content-Type' => 'application/x-www-form-urlencoded',
],
'form_params' => [
'grant_type' => 'client_credentials',
'scope' => $scope,
],
'cert' => [$certPath, $certPassword],
'verify' => $cacertPath,
]);
// Выводим результат запроса
echo $response->getBody()->getContents();
разработка собственного плеера
для онлайн трансляций с чатом в реальном времени.
Там должны быть реализованы лайки, дизлайки, реакции ( эмодзи )
Также там система НМО: Пользователь подтверждает свое присутствия путем нажатия на кнопку “Подтвердить” в попап окне, которое отображается регулярно на протяжении установленного интервала времени.
sudo chown -R www-data:www-data /webdirectory
sudo chmod -R 0755 /webdirectory
$itemstest[] = [
'item_sku' => $product->get_sku(),
'item_title' => $product->get_name(),
'item_quantity' => $item_data['quantity'],
'item_price' => $product->get_price()
];
var formData = new FormData();
formData.append('file', fileInput.files[0]);
$.ajax({
url: 'upload.php',
method: 'POST',
data: formData,
contentType: false,
processData: false,
success: function(response) {
console.log('File uploaded successfully');
},
error: function(jqXHR, textStatus, errorMessage) {
console.log('File upload failed: ' + errorMessage);
}
});
require_once '/public_html/vendor/autoload.php';
$ffmpeg = FFMpeg\FFMpeg::create();
$mp3Format = new FFMpeg\Format\Audio\Mp3();
$videoFolderPath='/public_html';
if(!isset($_FILES['file'])) {
return 'no file';
}
$tempName = $_FILES['file']['tmp_name'];
$audioObj = $ffmpeg->open($tempName);
$audioObj->save($mp3Format, $videoFolderPath.'/myfile.mp3');