PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Optimierung der klick4.php mit Statistik



dragon11
16.12.2006, 16:41
Wer seine klick4.php etwas optimieren will und auch eine Statistikanzeige drin hat, dem schlage ich vor mal folgendes zu testen, um die DB zu entlasten und evtl. einen Geschwindigkeitsvorteil zu erhalten:


<? userstatus();
head("Paidbanner");

$max_banner = mysql_fetch_array(db_query("SELECT `max_forced` FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid'].""));
$fbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and sponsor != '".$_SESSION['uid']."' and `verdienst` >0 and status = '1' ORDER BY verdienst DESC");
$stat_gesamt = 0;
$stat_verguetung = 0;
$stat_aufenthalt = 0;
$stat_reload = 0;
//Gesamtwert der Minusbanner
$minusbanner=0;
// $db_minus_banner_laden = mysql_fetch_array(db_query("SELECT SUM(verdienst) AS abzug FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='administrator' and werbeart = 'forcedbanner' and status = '1' and `verdienst` <0"));
// $minusbanner=$db_minus_banner_laden['abzug'];

while($fa=mysql_fetch_array($fbanner)){
$int_reload = db_query("SELECT * FROM ".$db_prefix."_reloads WHERE tan='".$fa['tan']."' and (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()."");
$stat_gesamt++;
$stat_verguetung = $stat_verguetung+$fa['verdienst'];
$stat_aufenthalt = $stat_aufenthalt+$fa['aufendhalt'];
if (mysql_num_rows($int_reload) > 0) { $stat_reload++; }
}
echo "<center><b>";
echo "Aktive Paidbanner: ".number_format(($stat_gesamt-$stat_reload),0,',','.')." | Reloadsperre: ".number_format($stat_reload,0,',','.');
echo " <br /> ";
echo "Ø Aufenthalt: ".number_format(($stat_aufenthalt/$stat_gesamt),2,',','.')." Sek. | ";
echo "Ø Durchlauf: ".number_format(($stat_gesamt*(($stat_verguetung-$minusbanner)/$stat_gesamt)),2,',','.')." ".$waehrung." | ";
echo "Ø Vergütung: ".number_format((($stat_verguetung)/$stat_gesamt),2,',','.')." ".$waehrung;
echo "</center></b><br />";

mysql_data_seek($fbanner, 0);
//$forcedbanner = db_query("SELECT tan,banner,reload,verdienst,aufendhalt FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and status = '1' and sponsor != '".$_SESSION['uid']."' ORDER BY verdienst DESC");
$nextreload = 0;
while($f_banner=mysql_fetch_array($fbanner)){
$int_reload = db_query("SELECT bis FROM ".$db_prefix."_reloads WHERE tan='".$f_banner['tan']."' and (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()."");
if (!mysql_num_rows($int_reload) && $x_banner <= ($max_banner['max_forced']-1)) {
echo '<div align="center" id="banner_'.$x_banner.'"><a href="fc.php?tan='.$f_banner['tan'].'" target="_blank"><img src="'.$f_banner['banner'].'" border="1" height="60" width="468" alt="'.$f_banner['tan'].'" onClick="document.getElementById(\'banner_'.$x_banner.'\'). style.display=\'none\';"></a><br>Reload:'. $f_banner['reload']/3600 .' Std. | Verdienst: '.number_format($f_banner['verdienst'],2,',','.').' | Aufendhalt:'.$f_banner['aufendhalt'].' Sekunden<br><br></div>';
$x_banner++;
} else {
$int_reload = db_query("SELECT bis FROM ".$db_prefix."_reloads WHERE (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()." ORDER BY bis ASC");
$reload = mysql_fetch_object ($int_reload);
if ($reload->bis > $nextforced) { $nextforced = $reload->bis; }
}
}

if ($x_banner <= 0) {
echo '<hr><hr><hr><div align="center"><font color="#FF0000"><b>Alle Banner im Reload !</b></font></div>';

} else {
echo '<div align="center"><form action="" method="post"><input type="Submit" name="mehr_banner" value="Weitere Banner ?"></form></div>';
}
mysql_free_result($fbanner);
foot();
?>

MrRomeobln
17.12.2006, 10:50
*mal ehrwürdig nen Beuger mach*

funzelt 1A auf Nickcoins :D

jaques
17.12.2006, 10:55
danke für den post nun muss ich nur noch sparen das ich mir wieder die vms version downloaden darf und addons ;)

MrRomeobln
17.12.2006, 11:04
/OT

Ich wüsste ja wie Du Dir ein paar Downies dazu verdienen könntest wenn Du ein grafisches Händchen hast... :D

Am besten schaust Du einfach mal HIER (http://www.designerscripte.net/thread.php?threadid=2115) vorbei - vielleicht ist das ja was für Dich 8)

/OT end

swinxx
17.12.2006, 11:42
Wenn ich das ganze machen will nur ich keine Minusbanner im Script hab, lass ich einfach den folgenden teil weg, oder ?


//Gesamtwert der Minusbanner
$minusbanner=0;
// $db_minus_banner_laden = mysql_fetch_array(db_query("SELECT SUM(verdienst) AS abzug FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='administrator' and werbeart = 'forcedbanner' and status = '1' and `verdienst` <0"));
// $minusbanner=$db_minus_banner_laden['abzug'];

cu, Swinxx

*EDIT*

Ups, sehe grad das das ja sowieso Standardmäsig mit drin ist, Frage erübrigt sich also !

Gnarf
19.12.2006, 19:05
danke scheint zu klappen alles :D

Aber die neue Klick4 braucht viel länger zum laden bei mir, ist das so normal?

dragon11
19.12.2006, 22:47
wenn sie länger braucht, dann nutze Deine alte klick4. Würde mich freuen, wenn Du Deine Lösung für eine schnelle klick4 posten würdest, oder meinst du die, die im Standart enthalten ist?

Gnarf
20.12.2006, 16:13
hey,

ich hatte vorher die standard klick4. deine hat den Vorteil das die eigenen Banner nicht mehr angezeigt werden und die Banner nach Vergütung sortiert werden.

Der Große Nachteil ist aber das es merkbar länger dauert bis die Seite sich aufgebaut hat, kann es daran liegen das die Datenbank einfach zu hoch belastet wird wenn es die Banner sortiert? Bei fast 400 Kampagnen und 50 Bannern pro Seite ist das schon was...

jaques
20.12.2006, 23:35
Original von Gnarf
hey,

ich hatte vorher die standard klick4. deine hat den Vorteil das die eigenen Banner nicht mehr angezeigt werden und die Banner nach Vergütung sortiert werden.

Der Große Nachteil ist aber das es merkbar länger dauert bis die Seite sich aufgebaut hat, kann es daran liegen das die Datenbank einfach zu hoch belastet wird wenn es die Banner sortiert? Bei fast 400 Kampagnen und 50 Bannern pro Seite ist das schon was...

ja das dauert dann so oder so ein bischen länger du musst bedenken das er von jedem banner die url und die img daten abrufen muss ist jallt eine ganze menge die da abgerufen wird!

wenn du die sotierung rausnimmst könnte es mili sekunden schneller werden ;)

teste doch einfach mal mit einem seiten aufbau counte was länger braucht währe nur mal ein tipp

SebbyPHM
21.12.2006, 05:01
besser wäre es, die statistik so zu machen:


<?
userstatus();
$max_verguet = 800; //Wie hoch darf die maximale Verguetung sein? Schutz gegen z.B. Interface-Fehler

$forcedbanner = mysql_fetch_object (db_query ("SELECT COUNT(*) AS anzahl FROM ".$db_prefix."_gebuchte_werbung t1 LEFT JOIN ".$db_prefix."_reloads t2 ON (t1.tan=t2.tan AND (t2.uid='".$_SESSION['uid']."' or t2.ip='".$ip."')) WHERE t1.menge >='1' and t1.werbeart = 'forcedbanner' and t1.status = '1' and t1.sponsor != '".$_SESSION['uid']."' AND t2.tan IS NULL ORDER BY verdienst DESC"));
$notreload = $forcedbanner->anzahl;
$reloadbanner = mysql_fetch_object (db_query ("SELECT COUNT(*) AS anzahl FROM ".$db_prefix."_gebuchte_werbung t1 LEFT JOIN ".$db_prefix."_reloads t2 ON (t1.tan=t2.tan AND (t2.uid='".$_SESSION['uid']."' or t2.ip='".$ip."')) WHERE t1.menge >='1' and t1.werbeart = 'forcedbanner' and t1.status = '1' and t1.sponsor != '".$_SESSION['uid']."' AND t2.tan IS NOT NULL ORDER BY verdienst DESC"));
$inreload = $reloadbanner->anzahl;

head("");
$max_banner = mysql_fetch_array(db_query("SELECT `max_forced` FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid'].""));

$statsql = mysql_query("SELECT SUM(verdienst) AS sum_verdienst, SUM(aufendhalt) AS sum_aufendhalt FROM ".$db_prefix."_gebuchte_werbung WHERE menge >=1 AND werbeart = 'forcedbanner' AND status = 1 AND sponsor != '".$_SESSION['uid']."' AND verdienst > 0 AND verdienst <= ".$max_verguet) or die(mysql_error());
$stat = mysql_fetch_array ($statsql);
$gesamt = $notreload+$inreload;
echo '<center>";
echo 'Aktive Paidbanner: '.($notreload-$inreload).' | Reloadsperre: '.$inreload.'<br />';
echo 'Ø Aufenthalt: '.number_format(($stat['sum_aufendhalt']/$gesamt),2,',','.').' Sek. | ';
echo 'Ø Durchlauf: '.number_format(($gesamt*($stat['sum_verdienst']/$gesamt)),2,',','.').' '.$waehrung.' | ';
echo 'Ø Verg&uuml;tung: '.number_format(($stat['sum_verdienst']/$gesamt),2,',','.').' '.$waehrung;
echo '</center><br /><br />";

$forcedbanner = db_query ("SELECT t1.* FROM ".$db_prefix."_gebuchte_werbung t1 LEFT JOIN ".$db_prefix."_reloads t2 ON (t1.tan=t2.tan AND (t2.uid='".$_SESSION['uid']."' or t2.ip='".$ip."')) WHERE t1.menge >='1' and t1.werbeart = 'forcedbanner' and t1.status = '1' and t1.sponsor != '".$_SESSION['uid']."' AND t2.tan IS NULL ORDER BY verdienst DESC LIMIT ".$max_banner['max_forced']);
$i = 0;
while($f_banner = mysql_fetch_array($forcedbanner)){
echo '<div align="center" id="banner_'.$i.'"><a href="fc.php?tan='.$f_banner['tan'].'" target="_blank"><img src="'.$f_banner['banner'].'" border="0" height="60" width="468" alt="" onClick="document.getElementById(\'banner_'.$i.'\').style.d isplay=\'none\';"></a><br>Reload:'. $f_banner['reload']/3600 .' Std. | Verdienst: '.number_format($f_banner['verdienst'],2,',','.').' | Aufendhalt:'.$f_banner['aufendhalt'].' Sekunden<br><br></div>';
$i++;
}

if ($i != 0) echo '<div align="center"><form action="" method="post"><input type="submit" name="mehr_banner" value="Weitere Banner ?" /></form></div>';
else echo '<center>Alle Banner im Reload!</center>';

foot ();
?>

kleinerengel
01.02.2007, 18:37
Original von dragon11
Wer seine klick4.php etwas optimieren will und auch eine Statistikanzeige drin hat, dem schlage ich vor mal folgendes zu testen, um die DB zu entlasten und evtl. einen Geschwindigkeitsvorteil zu erhalten:


<? userstatus();
head("Paidbanner");

$max_banner = mysql_fetch_array(db_query("SELECT `max_forced` FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid'].""));
$fbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and sponsor != '".$_SESSION['uid']."' and `verdienst` >0 and status = '1' ORDER BY verdienst DESC");
$stat_gesamt = 0;
$stat_verguetung = 0;
$stat_aufenthalt = 0;
$stat_reload = 0;
//Gesamtwert der Minusbanner
$minusbanner=0;
// $db_minus_banner_laden = mysql_fetch_array(db_query("SELECT SUM(verdienst) AS abzug FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='administrator' and werbeart = 'forcedbanner' and status = '1' and `verdienst` <0"));
// $minusbanner=$db_minus_banner_laden['abzug'];

while($fa=mysql_fetch_array($fbanner)){
$int_reload = db_query("SELECT * FROM ".$db_prefix."_reloads WHERE tan='".$fa['tan']."' and (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()."");
$stat_gesamt++;
$stat_verguetung = $stat_verguetung+$fa['verdienst'];
$stat_aufenthalt = $stat_aufenthalt+$fa['aufendhalt'];
if (mysql_num_rows($int_reload) > 0) { $stat_reload++; }
}
echo "<center><b>";
echo "Aktive Paidbanner: ".number_format(($stat_gesamt-$stat_reload),0,',','.')." | Reloadsperre: ".number_format($stat_reload,0,',','.');
echo " <br /> ";
echo "Ø Aufenthalt: ".number_format(($stat_aufenthalt/$stat_gesamt),2,',','.')." Sek. | ";
echo "Ø Durchlauf: ".number_format(($stat_gesamt*(($stat_verguetung-$minusbanner)/$stat_gesamt)),2,',','.')." ".$waehrung." | ";
echo "Ø Vergütung: ".number_format((($stat_verguetung)/$stat_gesamt),2,',','.')." ".$waehrung;
echo "</center></b><br />";

mysql_data_seek($fbanner, 0);
//$forcedbanner = db_query("SELECT tan,banner,reload,verdienst,aufendhalt FROM ".$db_prefix."_gebuchte_werbung WHERE menge >='1' and werbeart = 'forcedbanner' and status = '1' and sponsor != '".$_SESSION['uid']."' ORDER BY verdienst DESC");
$nextreload = 0;
while($f_banner=mysql_fetch_array($fbanner)){
$int_reload = db_query("SELECT bis FROM ".$db_prefix."_reloads WHERE tan='".$f_banner['tan']."' and (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()."");
if (!mysql_num_rows($int_reload) && $x_banner <= ($max_banner['max_forced']-1)) {
echo '<div align="center" id="banner_'.$x_banner.'"><a href="fc.php?tan='.$f_banner['tan'].'" target="_blank"><img src="'.$f_banner['banner'].'" border="1" height="60" width="468" alt="'.$f_banner['tan'].'" onClick="document.getElementById(\'banner_'.$x_banner.'\'). style.display=\'none\';"></a><br>Reload:'. $f_banner['reload']/3600 .' Std. | Verdienst: '.number_format($f_banner['verdienst'],2,',','.').' | Aufendhalt:'.$f_banner['aufendhalt'].' Sekunden<br><br></div>';
$x_banner++;
} else {
$int_reload = db_query("SELECT bis FROM ".$db_prefix."_reloads WHERE (uid='".$_SESSION['uid']."' or ip='".$ip."') and bis >= ".time()." ORDER BY bis ASC");
$reload = mysql_fetch_object ($int_reload);
if ($reload->bis > $nextforced) { $nextforced = $reload->bis; }
}
}

if ($x_banner <= 0) {
echo '<hr><hr><hr><div align="center"><font color="#FF0000"><b>Alle Banner im Reload !</b></font></div>';

} else {
echo '<div align="center"><form action="" method="post"><input type="Submit" name="mehr_banner" value="Weitere Banner ?"></form></div>';
}
mysql_free_result($fbanner);
foot();
?>


das script funzt wirklich supi.

nun meine frage, ist es möglich das die banner nicht met sortiert angezeigt werden??
sonst klicken die user nur die hohen banner und nicht mehr die niedrigen.

Herzklopfen1974
01.02.2007, 19:00
Mach mal in Zeile 5 aus dem DESC ein ASC dann müßte die Banner zuerst kommen mit der kleinsten Vergütung.

Aber um den Klickbereich schneller zu machen muss man schon was in der Datenbank ändern.

Sentinel89
04.02.2007, 13:00
nice nice thx das konnte ich gut gebrauchen habs eingefügt und hat sofort geklapt :D

zweithirn
04.02.2007, 15:11
Funktioniert Klasse bei dem vom Sebby habe ich das Prob das dann nichts mehr angezeigt wird :-(

Fand das besser wegen der max Vergütung.

dragon11
06.02.2007, 08:44
Original von zweithirn
Funktioniert Klasse bei dem vom Sebby habe ich das Prob das dann nichts mehr angezeigt wird :-(

Fand das besser wegen der max Vergütung.

dann füge Zeile 3 aus dem code von Sebby ein
ersetze code von mir Zeile 35 damit:

if (!mysql_num_rows($int_reload) && $f_banner['verdienst'] <= $max_verguet && $x_banner <= ($max_banner['max_forced']-1)) {

halk
30.04.2007, 20:31
hallo



kann man dies auch einer für Paidlinks mit Statistik

machen .


mfg halk

Gremlin
30.04.2007, 20:44
einfach

and werbeart = 'forcedbanner'
durch

and werbeart = 'paidlinks'
ersetzen, und dann noch weiter unten bei der Ausgabge abändern ^^ also das <img src=""> weg... und nur den Linktext hin

Gruß
Gremlin


Original von halk
hallo



kann man dies auch einer für Paidlinks mit Statistik

machen .


mfg halk