1
0
Fork 0
oldhaven/php/bin/parser/handler.php

91 lines
2.4 KiB
PHP
Executable File

#!/opt/local/bin/php
<?php
require_once '/www/server/php/common.php';
$tmp = array_slice(scandir(Config::get('app:Parser:bot_stats_dir')), 2);
$bots = array();
foreach ($tmp as $bfile) {
$bots[str_replace('.json', '', $bfile)] = json_decode(file_get_contents(Config::get('app:Parser:bot_stats_dir').$bfile));
}
foreach ($bots as $name => $bot) {
$tmp = exec("ps ".$bot->pid);
$bot->active = (int) (strpos($tmp, strval($bot->pid)) !== false);
}
if (!isset($argv[1])) {
echo "Bad action\n";
die;
}
switch ($argv[1]) {
case 'add':
$bot_name = (isset($argv[2]) ? ucfirst($argv[2]) : false);
if ($bot_name && isset($bots[$bot_name])) {
$bot = $bots[$bot_name];
if($bot->active) {
echo $bot_name ." is working already\n";
} else {
echo "Launching ". $bot_name ."\n";
shell_exec(ROOT_DIR ."/bin/parser/worker_html_grabber.php ". $bot_name ." > /www/parser_data/log/". $bot_name .".log &");
}
} else {
$bots = custom_shuffle($bots);
foreach ($bots as $name => $bot) {
if (!$bot->active) {
echo "Launching ". $name ."\n";
shell_exec(ROOT_DIR ."/bin/parser/worker_html_grabber.php ". $name ." > /www/parser_data/log/". $name .".log &");
die;
}
}
echo "All bots are working already\n";
}
break;
case 'retire':
$bot_name = (isset($argv[2]) ? ucfirst($argv[2]) : false);
if ($bot_name == 'all') {
foreach ($bots as $name => $bot) {
if ($bot->active) {
echo "Stopping ". $name ."\n";
shell_exec("kill ". $bot->pid);
}
}
} elseif ($bot_name && isset($bots[$bot_name])) {
$bot = $bots[$bot_name];
if(!$bot->active) {
echo $bot_name ." is not working now\n";
} else {
echo "Stopping ". $bot_name ."\n";
shell_exec("kill ". $bot->pid);
}
} else {
$bots = custom_shuffle($bots);
foreach ($bots as $name => $bot) {
if ($bot->active) {
echo "Stopping ". $name ."\n";
shell_exec("kill ". $bot->pid);
die;
}
}
echo "All bots are working already\n";
}
break;
case 'list':
foreach($bots as $name => $bot) {
echo $name .': '. ($bot->active ? 'working' : 'down') ."\n";
}
break;
default:
echo "Bad action\n";
break;
}
function custom_shuffle($my_array = array()) {
$copy = array();
while (count($my_array)) {
$element = array_rand($my_array);
$copy[$element] = $my_array[$element];
unset($my_array[$element]);
}
return $copy;
}