From 56fa00b6ef49bb85c6c52138b661f20cc1a5908e Mon Sep 17 00:00:00 2001 From: magnolia-fan Date: Sun, 3 Apr 2011 02:18:55 +0400 Subject: [PATCH] File checker worker named Chopin --- php/bin/parser/worker_file_checker.php | 83 ++++++++++++++++++++++++++ php/core/classes/Vkontakte.class.php | 6 +- 2 files changed, 87 insertions(+), 2 deletions(-) create mode 100755 php/bin/parser/worker_file_checker.php diff --git a/php/bin/parser/worker_file_checker.php b/php/bin/parser/worker_file_checker.php new file mode 100755 index 0000000..13a5adf --- /dev/null +++ b/php/bin/parser/worker_file_checker.php @@ -0,0 +1,83 @@ +#!/opt/local/bin/php + time(), + 'eneded_job' => time(), + 'pid' => getmypid(), + 'good_results' => 0, + 'bad_results' => 0, + 'queue_size' => 0, + 'last_request' => '' +); + +// Устанавливаем коннект с БД +$db = Db::getInstance(); + +$vk = new Vkontakte(); + +// Бот работает все время +while (true) { + + // Получаем список песен для проверки, помечаем в очереди, что мы их взяли в работу + $db->q('BEGIN'); + $queue = $db->getRows($db->q("SELECT * FROM beathaven.queue WHERE status=3 LIMIT ". QUEUE_PACK)); + $ids = array(); + foreach ($queue as $t) { + $ids[] = $t['track_id']; + } + $db->q('UPDATE beathaven.queue SET status=4 WHERE track_id IN('. implode(',', $ids) .')'); + $db->q('COMMIT'); + + if (!$queue || count($queue) == 0) { + sleep(EMPTY_QUEUE_TIMEOUT); + } else { + $stats['queue_size'] = count($queue); + foreach ($queue as $t) { + $t1 = microtime(true); + echo "#{$t['track_id']} {$t['track_title']} -- "; + + $html = file_get_contents(Config::get('app:Parser:good_html_dir'). $t['track_id'] .'.html'); + $vk->setHtml($html); + $vk->parseHtml(); + $files = $vk->getFiles(); + + $tmp = explode(' - ', $t['track_title']); + $artist_name = $tmp[0]; + unset($tmp[0]); + $track_name = implode(' - ', $tmp); + + $files = VkontakteMP3::check($files, $artist_name, $track_name, $t['track_length']); + BeatDB::set($t['track_id'], $files); + echo count($files) ."\n"; + + if (count($files) > 0) { + $db->q("UPDATE beathaven.queue SET status=6 WHERE track_id=". $t['track_id']); + $stats['good_results']++; + } else { + $db->q("UPDATE beathaven.queue SET status=5, times_failed = times_failed + 1 WHERE track_id=". $t['track_id']); + $stats['bad_results']++; + } + + $stats['last_request'] = $t['track_title']; + $stats['queue_size']--; + $stats['eneded_job'] = time(); + + $bot_stats_file_name = Config::get('app:Parser:bot_stats_dir'). $bot_name .'.json'; + file_put_contents($bot_stats_file_name, json_encode($stats)); + chmod($bot_stats_file_name, 0777); + + $t2 = microtime(true); + } + } +} \ No newline at end of file diff --git a/php/core/classes/Vkontakte.class.php b/php/core/classes/Vkontakte.class.php index 2c6fbbe..6400e6f 100644 --- a/php/core/classes/Vkontakte.class.php +++ b/php/core/classes/Vkontakte.class.php @@ -24,8 +24,10 @@ class Vkontakte { private $_bot_info; // Информация о боте - public function __construct($bot_name) { - $this->_bot_info = Config::get('bot:'. $bot_name); + public function __construct($bot_name = false) { + if ($bot_name) { + $this->_bot_info = Config::get('bot:'. $bot_name); + } } /**