Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Statistiekenscript (https://forum.scholieren.com/showthread.php?t=696114)

Martin 20-12-2003 19:00

[PHP] Statistiekenscript
 
Ik heb op een website een statistiekenscript draaien dat bijhoud hoeveel unieke bezoekers er per dag komen en hoeveel pageviews ze genereren.

Plotseling werkt het script niet meer, er komen een aantal foutmeldingen tevoorschijn waar ik niet weer wat ik er mee aan moet. Ik vind het ook vreemd dat het script na meer dan 5.000 unieke bezoekers en 30.000 pageviews pas deze melding begint te vertonen.

De foutmelding:

Citaat:

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /usr/home/bellevue/www/includes/updatestats.php on line 23

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /usr/home/bellevue/www/includes/updatestats.php on line 24

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /usr/home/bellevue/www/includes/updatestats.php on line 29

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/bellevue/www/includes/updatestats.php on line 29

Broncode:
PHP-code:

<?
mysql_connect('localhost','blub','blub') or die('Hmmz.');
mysql_select_db('blub') or die('Onverwachte fout opgetreden!');

/* set some vars */
$vanjaar = date('Y');
$vandaag = date('z');
$clientip = $_SERVER['REMOTE_ADDR'];
$currenttime = time();
$hostname = gethostbyaddr($clientip);
$lastvisitcode = $vandaag.$vanjaar;

/* ##### STATISTIEKEN VPD ##### */
/* check if there is a row with today`s stats, if not, create one */
$sql = "SELECT * FROM statistieken_vpd WHERE dag = '$vandaag' AND jaar = '$vanjaar'"; 
$resultaat = mysql_query($sql) or die(mysql_error()); 
$aantal = mysql_num_rows ($resultaat); 
if ($aantal < 1){ 
mysql_query("INSERT INTO statistieken_vpd (jaar,dag) VALUES ('$vanjaar', '$vandaag')") or die (mysql_error());


/* ##### STATISTIEKEN IPS ##### */
$statistieken = mysql_query("SELECT * FROM statistieken_ips WHERE ip = '$clientip'");
$rows = mysql_numrows($statistieken);
if($rows < 1){
mysql_query("INSERT INTO statistieken_ips (ip,views,firstvisit,lastvisit,hostname) VALUES ('$clientip', '0', '$currenttime', '$currenttime', '$hostname')") or die (mysql_error());
}

$checklastvisit = mysql_fetch_array(mysql_query("SELECT lastvisitcode FROM statistieken_ips WHERE ip = '$clientip'"));
$dblastvisitcode = $checklastvisit['lastvisitcode'];

if($dblastvisitcode < $lastvisitcode){
    /* check if there is a row with today`s stats, if not, create one */
    $sql = "SELECT * FROM statistieken_uvpd WHERE dag = '$vandaag' AND jaar = '$vanjaar'"; 
    $resultaat = mysql_query($sql) or die(mysql_error()); 
    $aantal = mysql_num_rows ($resultaat); 
    if ($aantal < 1){ 
    mysql_query("INSERT INTO statistieken_uvpd (jaar,dag) VALUES ('$vanjaar', '$vandaag')") or die (mysql_error());
    }
    
    mysql_query("UPDATE statistieken_uvpd SET visits=visits+1 WHERE dag = '$vandaag' AND jaar = '$vanjaar'");

}


/* update global info */
mysql_query("UPDATE statistieken_vpd SET views=views+1 WHERE dag = '$vandaag' AND jaar = '$vanjaar'");

/* update per-user info */
mysql_query("UPDATE statistieken_ips SET views=views+1, lastvisit='$currenttime', lastvisitcode='$lastvisitcode' WHERE ip = '$clientip'");


?>


Harrie 21-12-2003 07:51

ik heb een vermoeden dat de velden niet groot genoeg zijn om de waarde te mogen opslaan. Dus maak van SMALLINT (als je die gebruikt) een MEDIUMINT?

Koen 21-12-2003 09:36

Citaat:

Harrie schreef op 21-12-2003 @ 08:51:
ik heb een vermoeden dat de velden niet groot genoeg zijn om de waarde te mogen opslaan. Dus maak van SMALLINT (als je die gebruikt) een MEDIUMINT?
Denk ik inderdaad ook. Heb zelf ook eerder meegemaakt dat een statistieken script er de brui aan gaf omdat de velden om 't ID in op te slaan niet groot genoeg meer waren.

Triloxigen 21-12-2003 23:19

Of je database zit vol :)
Misschien zit je aan je max quata

Blowie 22-12-2003 07:41

als ie het altijd gedaan heeft zal je inderdaad sneller aan je quota zitten dan dat het script faalt..

Alleen ff 1 vraagje.. waarom werk je niet met DATE / DATETIME velden? Dat is namelijk sneller en neemt minder ruimte in..
Ik ben geloof ik wel een beetje te laat.. want het script is al in gebruik.. maar misschien voor versie 2. :D

En volgens mij als je veld niet groot genoeg is dan kapt ie hem gewoon af.. Of je wil verkeerde data in de goede velden stoppen; tekst in INT velden en zow.. :) (ik heb het nog nooit geprobeerd.. maar het lijkt me dat dat niet kan..)

Martin 22-12-2003 09:02

Database vol? Lijkt me onwaarschijnlijk:

Code:

15 tabel(len)  Som  6.951  --    698,2 KB

Martin 22-12-2003 09:04

Interessant, als ik in PHPMyAdmin de DB wil exporteren:

PHP-code:

# phpMyAdmin SQL Dump
# version 2.5.4-rc2
# [url]http://www.phpmyadmin.net[/url]
#
# Host: localhost
# Generatie Tijd: 22 Dec 2003 om 10:03
# Server versie: 3.23.56
# PHP Versie: 4.3.1

# Database : `space`


# --------------------------------------------------------

#
# Tabel structuur voor tabel `statistieken_ips`
#

CREATE TABLE `statistieken_ips` (
  `
uidint(11NOT NULL auto_increment,
  `
ipvarchar(200NOT NULL default '',
  `
viewsvarchar(200NOT NULL default '',
  `
firstvisitvarchar(200NOT NULL default '',
  `
lastvisitvarchar(200NOT NULL default '',
  `
hostnamevarchar(200NOT NULL default '',
  `
lastvisitcodevarchar(10NOT NULL default '',
  
PRIMARY KEY  (`uid`)
TYPE=InnoDB ROW_FORMAT=COMPRESSED AUTO_INCREMENT=6149 ;

#
# Gegevens worden uitgevoerd voor tabel `statistieken_ips`
#


Warning:  mysql_query() [function.mysql-query]: Unable to save result set in /usr/home/bellevue/www/mysqladmin/libraries/mysql_wrappers.lib.php on line 108
Fout

    SQL
-query 


    
SELECT  FROM  `space`.`statistieken_ipsLIMIT 6146 


    MySQL retourneerde


#1030 - Got error 127 from table handler 


Blowie 22-12-2003 11:23

Niet per ongeluk je database een keertje gecrasht / beschadigd? Rechten veranderd - dat kan niet, want dan geeft ie dat aan? eh...

Dit is eigenlijk weer helemaal nieuwe voor mij.. Misschien php geupdate?
Citaat:

10.4.3 I upgraded to PHP 4, and now mysql keeps telling me "Warning: MySQL: Unable to save result set in ...". What's up?

Most likely what has happened is, PHP 4 was compiled with the '--with-mysql' option, without specifying the path to MySQL. This means PHP is using its built-in MySQL client library. If your system is running applications, such as PHP 3 as a concurrent Apache module, or auth-mysql, that use other versions of MySQL clients, then there is a conflict between the two differing versions of those clients.

Recompiling PHP 4, and adding the path to MySQL to the flag, ' --with-mysql=/your/path/to/mysql ' usually solves the problem.
is dat van toepassing bij jou?

Iets anders heb ik nog niet kunnen vinden.. :S


Alle tijden zijn GMT +1. Het is nu 05:05.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.