Anwendung wird in Zend Framework 1.12
geschrieben. Meine Videos sind unter url
:So zählen Sie jedes Video einzigartige Ansichten
test.com/videos/video/id/1
test.com/videos/video/id/2
test.com/videos/video/id/3
...
wo die Zahl ein eindeutiger Parameter von MySQL DB erzeugt wird. Ich möchte Ansichten von jedem Video (einzigartig) zählen.
Mein Video Aktion in VideosController
wie folgt aussieht:
public function videoAction() {
$video_id = $this->_getParam('id', 0);
$hits = new Application_Model_DbTable_Hits();
$hit = $hits->fetchRow($hits->select()->where('belongs_to_video = ?', $video_id));
if (!isset($_SESSION['views']) || !($_SESSION['views'] == $video_id){
$_SESSION['views'] = $video_id;
$newViews = $hit->count + 1;
$data = array('count' => $newViews,);
$hits->update($data);
}
}
Es funktioniert jedoch nicht in einem richtigen Weg. Nach dem Besuch bestimmter Video-Ansichten steigen (nach dem Aktualisieren der Website nicht), nach dem Besuch einer anderen Ansichten auch steigen (nach der Aktualisierung der Website nicht), aber nach dem Zurückkommen auf die erste steigen sie wieder (sie sollten nicht).
Jede Hilfe wird geschätzt.
Warum behalten Sie Ansichten in der Sitzung? – Naincy
in der Tat Sitzungen sind nicht gut für diese benötigen Sie eine Tabelle "view", wo Sie die video_id, ip, datetime .. Wenn Sie diese Abfrage verwenden können, um eindeutige Ansichten (eindeutige ip) pro Video auswählen SELECT video_id, COUNT (DISTINCT ip) FROM-Ansicht GROUP BY video_id ORDER BY video_id' –