「ロシア10」の投票に従います

多くのロシア人と同じように、最近私毎日サイトにアクセスしてサイト10russia.ruに投票しています。 誰かが知らない場合、ロシア10はすべてロシアのプロジェクトであり、その中で誰もがロシアでお気に入りの地理的または建築物に投票できます。 プロジェクトの目的は、ロシアの10個の新しい視覚的なシンボルを選択することです。

投票のTOP2の数字は私には奇妙に思えたので、どのように変化するかを確認することにしました。 時間はほとんどなく、サイトとSMSの投票数に関するデータを2〜3秒ごとに保存する小さなパーサーを作成しました。 このデータを表示するために、私はサイトを作成しました(グラフのデザインと基礎はここから取られましたhabrahabr.ru/post/176547 。著者が気にしないことを望みます)。 私はお金を使いたくありませんでしたが、私が自由に使えるのは弱い個人用VDSだけでした。データが動的に生成されると、すぐにダウンします。 したがって、静的htmlを使用して、クラウンにjsonファイルを生成することが決定されました。 2つの小さなサービスと1つのアクセスの少ないサイトがあるため、現在の構成(CPU 300MHz、RAM 128 Mb)を変更せずにVDSが耐えられる負荷を確認するのは興味深いでしょう。 投票の最後に、誰かが必要に応じて、受け取ったすべての投票データを投稿します。



パーサーのリスト



<?php set_time_limit(0); function handleError($errno, $errstr, $errfile, $errline, array $errcontext) { if (0 === error_reporting()) { return false; } throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler('handleError'); mysql_connect('localhost', 'login', 'password'); mysql_select_db('10russia'); function addNewData($html, $key) { $site = $sms = 0; if( preg_match('/<span id="count_votes_site">([^<]+)/iu', $html, $match) ) { $site = (int)str_replace(' ', '', $match[1]); } if( preg_match('/<span id="count_votes_sms">([^<]+)/iu', $html, $match) ) { $sms = (int)str_replace(' ', '', $match[1]); } if($site && $sms) { $all = $sms + $site; mysql_query("INSERT INTO stat(`key`, sms, site, `all`) VALUES('$key', $sms, $site, $all)"); } } $urls = array( 'object_31' => 'http://10russia.ru/object_31', 'object_61' => 'http://10russia.ru/object_61' ); while(true) { foreach($urls as $key => $url) { try { $result = file_get_contents($url); addNewData($result, $key); sleep(1); } catch(Exception $e) {} } }
      
      







クラウンごとにJSONファイルを作成するリストスクリプト



 <?php mysql_connect('localhost', 'login', 'password'); mysql_select_db('10russia'); $keys = array( 'object_31' => 'object31.json', 'object_61' => 'object61.json' ); foreach($keys as $key => $file) { $filename = dirname(__FILE__) . '/' . $file . '.tmp'; $fLink = fopen($filename, 'w'); if($fLink) { $result = mysql_query("SELECT `date`, `all` FROM stat WHERE `key`='$key' ORDER BY id ASC"); fwrite($fLink, "[\n"); $row = mysql_fetch_assoc($result); $first = true; do { $str = ''; if(!$first){ $str = ","; } else { $first = false; } fwrite($fLink, $str . '['.strtotime($row['date']) . "000,{$row['all']}]" ); } while($row = mysql_fetch_assoc($result)); fwrite($fLink, "]"); fclose($fLink); rename($filename, dirname(__FILE__) . '/' . $file); } }
      
      





興味深い点-最初に.tmpファイルを生成し、次に1時間前に生成されたファイルを上書きします。これにより、ファイルが存在しないか、完全に生成されない状況を回避できます。



チャート上の興味深い点



30分間で最大の成長

30分間で最大の成長



監視期間全体の全体的なダイナミクス

監視期間全体の全体的なダイナミクス



VGTRK



このプロジェクトの大きな人気を考えると、あなたにとって大きな問題を引き起こさなかったことを願っています。 ところで、誰かがモスクワでシステム管理者を探している場合、サイトの作成者は従業員を探しています。従業員は完全にオリジナルではなく、めったにありません。

仕事



参照資料



私がしたことを見て、投票の詳細な統計に精通し、結論を出します: http : //10russia.miningdata.ru/



All Articles