WebCraft - ремесло веб разработки
6.46K subscribers
1.73K photos
259 videos
2 files
234 links
Интересуешься php , js , css , html , Laravel , Vue ? Этот канал для тебя

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront
Менеджер по рекламе: @Spiral_Yuri

Купить рекламу: https://telega.in/c/web_craft
Download Telegram
Управление асинхронной обработкой сигналов в PHP

pcntl_async_signals - это функция PHP, предназначенная для управления асинхронной обработкой сигналов в PHP-скриптах.

Как работает:
pcntl_async_signals(true) позволяет включить асинхронную обработку сигналов. После её активации все сигналы, на которые установлены обработчики с помощью pcntl_signal(), будут автоматически обрабатываться без необходимости вызывать pcntl_signal_dispatch(). Так как сигналы обрабатываются сразу же при их поступлении, без задержек.

Пример:
<?php

pcntl_async_signals(true); // Включаем асинхронную обработку сигналов

pcntl_signal(SIGINT, function($signal) {
echo "Получен сигнал SIGINT!\n";
exit();
});

while (true) {
echo "Работает...\n";
sleep(1);
}


В этом примере сигнал SIGINT (Ctrl+C) будет обрабатываться асинхронно, вызывая функцию обратного вызова, которая выводит сообщение и завершает работу скрипта.

👉 @web_craft | #php
Механизм загрузки классов в PHP

Какой механизм используется для загрузки классов с помощью функции spl_autoload_register()?

Если забыли, то в посте от 29.04.2024 мы разбирали этот функционал.

👉 @web_craft | #php
Асинхронная обработка сигналов в PHP

Функция pcntl_async_signals в PHP используется для управления асинхронной обработкой сигналов в процессе.

Как работает:

pcntl_async_signals(true) позволяет скрипту прерываться и немедленно обрабатывать сигналы, когда они поступают, независимо от того, в какой точке выполнения находится скрипт.

Пример использования:

// Включить асинхронную обработку
pcntl_async_signals(true);

function my_signal_handler($signo) {
echo "Сигнал $signo получен!\n";
}

// Назначить обработчик сигнала SIGUSR1
pcntl_signal(SIGUSR1, 'my_signal_handler');

// Сгенерировать сигнал SIGUSR1
pcntl_kill(getmypid(), SIGUSR1);

// ... остальная часть кода ...


👉 @web_craft | #php
Финализация классов

В статье говорится об автоматизации процесса финализации классов в PHP. В ней обсуждаются преимущества финализации классов для статического анализа и правил Rector. В статье также подробно описан инструмент под названием Swiss Knife, который можно использовать для безопасной финализации классов в проекте.

👉 @web_craft | #php
Работа pcntl_async_signals в PHP

Что делает функция pcntl_async_signals(true) в PHP?

Если забыли, то вернитесь к посту от 13.05.2024.

👉 @web_craft | #php
Защита чувствительных данных в PHP

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

Как работает sensitive_parameter:
При использовании этого атрибута, PHP скрывает значение параметра в сообщениях об ошибках и логах, заменяя его на ***. Это помогает предотвратить утечки конфиденциальной информации, такой как пароли или токены.

Пример использования:
class UserAuthenticator {
public function authenticate(
#[\SensitiveParameter] string $password
) {
// Логика аутентификации
if ($password !== 'secret') {
throw new \Exception("Authentication failed");
}
}
}

try {
(new UserAuthenticator())->authenticate('wrong_password');
} catch (\Exception $e) {
error_log($e->getMessage());
error_log($e->getTraceAsString());
}


В этом примере, если аутентификация не удастся, в логе вместо фактического значения пароля будет отображено ***.

👉 @web_craft | #php
Создание докер-образов PHP с помощью Wolfi-OS

Статья об улучшении создания Docker-образов для PHP с использованием Wolfi-OS. В ней сравниваются традиционные методы с использованием официального образа Docker для PHP и установкой расширений вручную, с подходом, который использует Wolfi-OS. Это позволяет ускорить процесс сборки, обеспечивает большую безопасность и предлагает сборки с предварительно скомпилированными пакетами. Wolfi-OS предназначен специально для контейнеров, поддерживает создание образов для разных архитектур и имеет улучшенную систему управления пакетами.

👉 @web_craft | #php
Работа с сигналами в PHP

Какая функция позволяет скрипту прерываться и немедленно обрабатывать сигналы в любом месте выполнения?

Если забыли, то вернитесь к посту от 20.05.2024.

👉 @web_craft | #php
Получение всех переменных в текущей области видимости PHP

Функция get_defined_vars() в PHP возвращает ассоциативный массив всех определенных переменных в текущей области видимости. Ключи массива – это имена переменных, а значения – их содержимое. Функция возвращает как пользовательские переменные, так и суперглобальные массивы (например, $_GET, $_POST, $_SERVER).

Пример использования:
$name = "Alice";
$age = 30;

$all_vars = get_defined_vars();

print_r($all_vars);


Результат:
Array
(
[name] => Alice
[age] => 30
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[GLOBALS] => Array
*RECURSION*
)


👉 @web_craft | #php
Работа атрибута sensitive_parameter

Что делает PHP с параметрами, помеченными атрибутом sensitive_parameter, в сообщениях об ошибках и логах?

Если забыли, то вернитесь к посту от 03.06.2024.

👉 @web_craft | #php
Проверка требований платформы с помощью Composer

composer check-platform-reqs — команда, проверяющая соответствие версий PHP и расширений требованиям проекта. Она анализирует зависимости проекта и сверяет текущие версии с минимальными требованиями из файла composer.json, выводя предупреждения при несоответствии.

Эта команда помогает избежать проблем при развертывании, быстро определить отсутствующие или несовместимые версии PHP и расширений, а также автоматизировать проверки в CI/CD, обеспечивая стабильность и корректную работу проекта.

Параметры:
--ignore-platform-reqs: указывает Composer игнорировать все платформные требования.
--ignore-platform-req <requirement>: указывает Composer игнорировать конкретное платформное требование.
--strict: указывает Composer выводить сообщение об ошибке, если не все платформные требования выполнены.

Пример использования:
composer check-platform-reqs

👉 @web_craft | #php