Написал класс который отслеживает изменения в файлах, но почему-то перехват изменения происходит с задержкой в пару секунд.
<?php
namespace App;
class CheckChange
{
private $srcDir;
private $srcExt;
private $structureUnitMTimes = [];
public function __construct($config)
{
$this->srcDir = $config['compile']['srcDir'] ? $config['compile']['srcDir'] : './';
$this->srcExt = $config['compile']['srcExt'] ? $config['compile']['srcExt'] : 'bea';
}
public function start() {
$this->loop();
}
private function makeStructure($srcDir) {
$units = scandir($srcDir);
$units = array_slice($units, 2);
$structure = [];
foreach ($units as $unit) {
$unitPath = $srcDir . '/' . $unit;
if (is_dir($unitPath)) {
$structure = array_merge($structure, $this->makeStructure($unitPath));
} elseif (pathinfo($unitPath,PATHINFO_EXTENSION) == $this->srcExt) {
$structure[] = $srcDir . '/' . $unit;
}
}
return $structure;
}
private function loop() {
while (true) {
$structure = $this->makeStructure($this->srcDir);
foreach ($structure as $unit) {
if (array_key_exists($unit, $this->structureUnitMTimes) == false) {
$this->structureUnitMTimes[$unit] = filemtime($unit);
$this->findNewOrChange($unit);
} elseif ($this->structureUnitMTimes[$unit] < filemtime($unit)) {
$this->structureUnitMTimes[$unit] = filemtime($unit);
$this->findNewOrChange($unit);
}
}
}
}
private function findNewOrChange($unit) {
var_dump($unit . ' на компиляции...');
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Нужно периодически писать в файл данные, и из другого потока считывать и обрабатывать
Сразу говорю, что мой алгоритм не претендует на лучшее решение, я просто не могу понять, почему он правильно узнает только пробел (в 100% случаев),...