Я разработчик библиотеки ko-worker. Я добавляю функцию с исполняемым файлом phar в качестве приложения-демона. И обнаружил странное поведение с phar и разветвлением процесса undex linux. Каждый раз, когда главный процесс разветвляется более чем на 1 ребенка, я получаю такую ошибку
include(phar:///opt/www/worker.phar/vendor/path/to/file.php):
failed to open stream: phar error: internal corruption of phar
"/opt/www/worker.phar" (crc32 mismatch on file "vendor/path/to/file.php")
in `phar:///opt/www/worker.phar/vendor/composer/ClassLoader.php` line 412
Заглушка (оригинальная заглушка здесь) выглядит так:
#!/usr/bin/env php
<?php
Phar::mapPhar('worker.phar');
require_once 'phar://worker.phar/vendor/autoload.php';
//Execute next going fork code more then one 1 time
...
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
...
} else {
// we are the child
...
exit(1);
}
__HALT_COMPILER();
Я не использую cache_list. Это происходит, только если phar сжат GZ или BZ2. Файлы Phar без сжатия не воспроизводят эту ошибку. Есть ли обходные пути или может быть какая-то информация об ограничении сжатых phars и разветвленных процессов?