diff --git a/php/api_test.php b/php/api_test.php new file mode 100755 index 0000000..fb5739f --- /dev/null +++ b/php/api_test.php @@ -0,0 +1,46 @@ +'; +require_once 'common.php'; + +$q = 'Fighters'; + +$api_config = array( + 'api_id' => '2259817', + 'api_key' => 'h0MiRNiffT', + 'api_key1' => 'FUrv4Dutqz4Lnzdh6UTe', + 'user_id' => '5728795', +); + +$post_v = array( + 'api_id' => $api_config['api_id'], + 'method' => 'audio.search&q='.$q, + 'sig' => md5($api_config['user_id'].'api_id='.$api_config['api_id'].'method=audio.searchq='.$q.'v=3.0format=JSONtest_mode=1'.$api_config['api_key']), + 'v' => '3.0', + 'format' => 'JSON', + 'test_mode' => 1, + 'sid' => '47c2f5501b22a3e3aa6947e5e74d1a72381267df2502570eb75c94481ade' +); + +$post = ''; +foreach($post_v as $key => $val) { + $post .= '&'. $key .'='. $val; +} +$post = substr($post, 1); + +$api_url = 'http://api.vk.com/api.php'; +$referer = 'http://vk.com/app'. $api_config['api_id'] .'_'. $api_config['user_id']; + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_URL, $api_url); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +curl_setopt($ch, CURLOPT_REFERER, $referer); +curl_setopt($ch, CURLOPT_POST, 1); +curl_setopt($ch, CURLOPT_POSTFIELDS, $post); +curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); +curl_setopt($ch, CURLOPT_USERAGENT, 'test'); +$data = curl_exec($ch); +curl_close($ch); + +echo $post."\n\n"; +echo(htmlentities($data)); \ No newline at end of file diff --git a/php/bin/parser/handler.php b/php/bin/parser/handler.php index 9419774..7e74b7d 100755 --- a/php/bin/parser/handler.php +++ b/php/bin/parser/handler.php @@ -4,27 +4,89 @@ chdir('../..'); require_once 'common.php'; -$workers = json_decode(file_get_contents('/www/parser_data/pid')); -if (!$workers) { - $workers = array('html_grabber' => array(), 'curl_mtgrabber' => array()); +$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': - shell_exec("./worker_". $argv[2] .".php > /www/parse.log &"); - break; - case 'remove': - if (isset($workers[$argv[2]]) && count($workers[$argv[2]]) > 0) { - $pid = $workers[$argv[2]][0]; - shell_exec("kill $pid"); + $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("./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("./worker_html_grabber.php ". $name ." > /www/parser_data/log/". $name .".log &"); + die; + } + } + echo "All bots are working already\n"; } - case 'status': - + 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($workers as $type => $pids) { - echo "$type: ". count($pids) ."\n"; + 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; } \ No newline at end of file