- 1
- 2
- 3
- 4
function runIcqBot($username, $password) {
$command = "nohup php-fcgi process.php ". $username ." ". $password ." > logs/".$username.".log &";
shell_exec($command);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+164
function runIcqBot($username, $password) {
$command = "nohup php-fcgi process.php ". $username ." ". $password ." > logs/".$username.".log &";
shell_exec($command);
}
И похеру на безопасность... Зато ICQ-клиент прямо в браузере!
1. для каждого соединения запускается shell_exec("micq с опциями &");
2. запускается ps(1), зохавывается его вывод и разбивается на строки;
3. выполняется getpid(2);
4. далее, проходим построчно по выхлопу от ps(1) и ищем там запущенный ps(1), у которого PPID равен полученному на шаге 3;
5. PID из предыдущей строчки будет pid'ом процесса micq;
Ну и по этому полученному PID'у принимается решение, надо ли запускать новый процесс для этого UIN'а.
Это отлично работает на абсолютно пустом сервере при работе в один поток (как собсно это и тестировалось девеломпердами). Сервис благополучно здох через две минуты нагрузочного тестирования. Весь комизм ситуации заключался в том, что библиотеку для работы с асичкой писали одни люди (отдел R&D), а сервис, который через неё работает - другие, которые как раз и отвечали за запуск этого сервиса в production.
в скайпе или жабе далеко не все сидят пока, поэтому приходится
в соответствии с вашей посылкой - если хотя бы один хомяк поставил себе...
<LOL>Баг високосного года, при котором 1 марта программа не запускалась без редактирования конфигурационных файлов или изменения даты на компьютере</LOL>