
pcntl_async_signals를 사용하여 동시성 프로그래밍을 구현할 때, signal 핸들링에 대한 이해가 필요합니다.
pcntl_async_signals(true)를 호출하여 signal 핸들링을 동시에 할 수 있습니다. 이 함수를 호출하면, signal 핸들링 함수가 동시에 호출됩니다.
예를 들어, SIGINT와 SIGTERM signal의 핸들링을 동시에 할 수 있습니다.
php
pcntl_async_signals(true);
pcntl_signal(SIGINT, function($signo) {
echo "SIGINT 발생n";
});
pcntl_signal(SIGTERM, function($signo) {
echo "SIGTERM 발생n";
});
pcntl_async_signals(true)를 호출하지 않고 signal 핸들링 함수를 동시에 호출하려고 시도하면, signal 핸들링 함수가 하나씩 순차적으로 호출됩니다. 이 경우, signal 핸들링 함수가 동시에 호출되지 않습니다.
예를 들어, SIGINT와 SIGTERM signal의 핸들링을 동시에 할 수 없습니다.
php
pcntl_signal(SIGINT, function($signo) {
echo "SIGINT 발생n";
});
pcntl_signal(SIGTERM, function($signo) {
echo "SIGTERM 발생n";
});
이러한 문제를 해결하려면, pcntl_async_signals(true)를 호출하여 signal 핸들링을 동시에 할 수 있습니다.
php
pcntl_async_signals(true);
pcntl_signal(SIGINT, function($signo) {
echo "SIGINT 발생n";
});
pcntl_signal(SIGTERM, function($signo) {
echo "SIGTERM 발생n";
});
이러한 코드를 실행하면, SIGINT와 SIGTERM signal의 핸들링이 동시에 호출됩니다.
2025-07-08 06:26