Attachment Mod -> Traffic reduzieren

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Attachment Mod -> Traffic reduzieren

Beitrag von mgutt »

Gerade Videostreams produzieren höllischen Traffic. Deshalb gehe ich im Moment wie folgt vor:

- Ich ermittel den erzielten Monatstraffic per php-Datei.
- Wenn der Wert X erreicht wurde, dann werden die Videoseiten gesperrt

Dadurch konnte ich aber bisher nicht davor schützen, dass User einfach den direkten Link zum Video weiter geben und damit weiterhin Traffic generieren.

Daher gehe ich dagegen wie folgt an mit diesem kleinen Script, dass ich mir ins Adminverzeichnis gelegt habe:

Code: Alles auswählen

<?php
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

// Files & Variables of phpBB
define('IN_PHPBB', true); 
$phpbb_root_path = '../'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 
//
// End session management

$filenamearray = file($phpbb_root_path . 'usage/index.html');
$dateiname = substr(str_replace('<TR><TD NOWRAP><A HREF="', '', str_replace('"><FONT SIZE="-1">', '', str_replace('</FONT></A></TD>', '', trim($filenamearray[50])))), 0, 17);
$_kbarray = file($phpbb_root_path . 'usage/' . $dateiname);
$newarray = array();

for ($i = 0; $i < count($_kbarray); $i++)
{
   if ( strstr($_kbarray[$i], '.wmv') )
   {
		$_kbarray[$i] = trim(strip_tags($_kbarray[$i]));
		array_push($newarray, "files/" . basename($_kbarray[$i],".wmv") . ".wmv"); // ein kleiner Trick um den Schrägstrich vor "files" wegzubekommen :D
   }
}
// $newarray enthält nun die zu ändernden Dateinamen inkl. "files/"
//print_r($newarray);

for ($i = 0; $i < count($newarray); $i++)
{
	echo("Wir beginnen mit Datei $newarray[$i]:<br />");
	if ( is_file($phpbb_root_path . $newarray[$i]) ) // ist die Datei überhaupt im Ordner "files/" vorhanden?
	{
		echo("Die Datei ist vorhanden...<br />");
		$old_filename = basename($newarray[$i]);
		//
		// Go ahead and pull all data for this video
		//
		$sql = "SELECT real_filename, extension
			FROM phpbb_attachments_desc
			WHERE physical_filename = '" . $old_filename . "'
			LIMIT 1";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could not obtain video information.", '', __LINE__, __FILE__, $sql);
		}
		// Did the query return any data?
		if ( $videorow = $db->sql_fetchrow($result) )
		{
			$new_filename = basename($videorow['real_filename'], ".wmv") . '_' . substr(rand(), 0, 3) . '.' . $videorow['extension'];
			$renamefile = rename($phpbb_root_path . $newarray[$i], $phpbb_root_path . 'files/' . $new_filename);
			if ($renamefile)
			{
				echo("Die Datei konnte erfolgreich in $new_filename umbenannt werden...<br />");
				//
				// Update the filename
				//
				$sql = "UPDATE phpbb_attachments_desc
				    SET physical_filename = '" . $new_filename . "'
					WHERE physical_filename = '" . $old_filename . "'";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, 'Could not update filename in database!', '', __LINE__, __FILE__, $sql);
				}
				else
				{
					echo("Die Datei wurde erfolgreich in der Datenbank gespeichert...<br /><br />");
				}
			}
			else
			{
				echo("Die Datei konnte nicht in $new_filename umbenannt werden! (Fehler)<br /><br />");
			}
		}
		else
		{
			echo("Die Datei wurde nicht in der Datenbank gefunden! (Fehler)<br /><br />");
		}
	}
	else
	{
		echo("Die Datei befindet sich nicht im Ordner \"files/\"!<br /><br />");
	}
}

?>
Dabei sucht der Mod in der Webalizerstatistik (die muss installiert sein) nach dem Dateiname und nach Videos, die in der Statistik erwähnt werden und die auf ".wmv" enden und benennt sie neu. Dabei werden die für den Attachment Mod relevanten Datenbankeinträge ebenfalls upgedatet.

Das sieht dann so aus:
Wir beginnen mit Datei files/fulda_05_190.wmv:
Die Datei ist vorhanden...
Die Datei konnte erfolgreich in fulda_05_181.wmv umbenannt werden...
Die Datei wurde erfolgreich in der Datenbank gespeichert...

Wir beginnen mit Datei files/mghonda_121.wmv:
Die Datei ist vorhanden...
Die Datei konnte erfolgreich in mghonda_112.wmv umbenannt werden...
Die Datei wurde erfolgreich in der Datenbank gespeichert...

Wir beginnen mit Datei files/vtecmagic1_205.wmv:
Die Datei ist vorhanden...
Die Datei konnte erfolgreich in vtecmagic1_169.wmv umbenannt werden...
Die Datei wurde erfolgreich in der Datenbank gespeichert...
usw...
Vielleicht kann ja jemand etwas mit diesem Codeschnippsel anfangen.

Seitdem ich die Traffickontrolle integriert habe spare ich bares Geld. Ca. 50 - 200,- EUR musste ich in der Vergangenheit alleine für zusätzlichen Traffic im Monat berappen. Das hat sich seit den Modifikation auf 0 reduziert :D

Als Gimmick haben ganz bestimmte User aber immer noch die Möglichkeit die Videos zu sehen, wenn der Traffic abgelaufen ist. Wie ich finde eine nette Sache :D

Insbesondere steigen die Userregistrierungen zum Ende eines Monats rapide an (sobald der Traffic abgelaufen ist, muss man sich einloggen wegen der Rechteabfrage und das animiert viele User zur Registrierung.)

Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“