Вот запустили вы на обновление огромный каталог в шелле. Как понять, идет ли процесс? Да, можно заморочиться с индикатором. А можно писать в лог, но не обычным способом.
#!/usr/bin/php
<?php
class Worker
{
private $counter = 1000;
public function start() {
# Вместо тиков, можно просто дергать pcntl_signal_dispatch на каждой итерации
# Количество тиков нужно тюнить
# declare можно так же вынести на верхний уровень и не делать ему отдельный скоуп
declare(ticks=2) {
while ($this->counter--) {
$this->doSmth();
sleep(1);
}
}
}
public function printStats() {
printf("Left:%d\n", $this->counter);
}
protected function doSmth() {
}
}
$worker = new Worker;
pcntl_signal(SIGUSR1, function() use ($worker) {
$worker->printStats();
});
printf("Try:\nkill -USR1 %d\n", getmypid());
print("\nStarted\n");
$worker->start();
|
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».