memory
Ik heb een PHPscriptje, maar als ik het script probeer te runnen krijg ik deze error:
Allowed memory size of 67108864 bytes exhausted (tried to allocate 30720 bytes)
Ik heb geprobeerd met ini_set("memory_limit","24M"); de memory limit te verhogen, Maar tot 500M werkt nog steeds helemaal niks. EDIT: Ook verandert er niks.
Volgens NotePad++ is mijn bestandje (maar) 1214 bytes en heeft 45 regels, waarvan 3 leeg zijn.
heeft iemand een oplossing op mijn probleem, of hebben jullie meer info nodig..?
UPDATE 1, 2.
Het script checkt of je bent ingelogd, je mail geactiveerd is en of je PowerPlayer bent (dat ben je als je betaald hebt voor extra opties):
(is weet dat ik niet inspring, en dat het slordig is)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
$checksql = "SELECT * FROM accounts WHERE id = '".mysql_real_escape_string($_SESSION['id'])."' AND pass = '".mysql_real_escape_string($_SESSION['pass'])."'";
$checkres = mysql_query($checksql);
if(mysql_num_rows($checkres) == 0){
unset($_SESSION['id']);
unset($_SESSION['naam']);
unset($_SESSION['pass']);
echo '
<html>
<Title>...</title>
<head>
<script language="JavaScript">
<!--
function omleiding(){
location=\'index.php\'
}
//-->
</script>
</head>
<body onLoad="setTimeout(\'omleiding()\',1);">
</body>
</html>
';
exit();
}
$rowacc = mysql_fetch_assoc($checkres);
if($rowacc['activatie'] != "actief"){
include 'activeer_mail.php';
exit();
}
if($rowacc['ppd'] >= date('Ymd')){
$ppupd = "UPDATE `randomnumber`.`accounts` SET pp = '1' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
}else{
$ppupd = "UPDATE `randomnumber`.`accounts` SET pp = '0' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
}
if($rowacc['punten'] < 0){
$ppupd2 = "UPDATE `randomnumber`.`accounts` SET punten = '0' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
mysql_query($ppupd2);
}
mysql_query($ppupd);
?>
$checksql = "SELECT * FROM accounts WHERE id = '".mysql_real_escape_string($_SESSION['id'])."' AND pass = '".mysql_real_escape_string($_SESSION['pass'])."'";
$checkres = mysql_query($checksql);
if(mysql_num_rows($checkres) == 0){
unset($_SESSION['id']);
unset($_SESSION['naam']);
unset($_SESSION['pass']);
echo '
<html>
<Title>...</title>
<head>
<script language="JavaScript">
<!--
function omleiding(){
location=\'index.php\'
}
//-->
</script>
</head>
<body onLoad="setTimeout(\'omleiding()\',1);">
</body>
</html>
';
exit();
}
$rowacc = mysql_fetch_assoc($checkres);
if($rowacc['activatie'] != "actief"){
include 'activeer_mail.php';
exit();
}
if($rowacc['ppd'] >= date('Ymd')){
$ppupd = "UPDATE `randomnumber`.`accounts` SET pp = '1' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
}else{
$ppupd = "UPDATE `randomnumber`.`accounts` SET pp = '0' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
}
if($rowacc['punten'] < 0){
$ppupd2 = "UPDATE `randomnumber`.`accounts` SET punten = '0' WHERE id = '".mysql_real_escape_string($_SESSION['id'])."'";
mysql_query($ppupd2);
}
mysql_query($ppupd);
?>
Hij geeft de fout op regel 40
het enige wat ik doe, voor ik de pagina include is session_starten en de databaseconnect includen (alleen verbinden met de database):
Alvast bedankt :)
Ro
Gewijzigd op 24/07/2010 20:59:36 door Maestro Roboroads
Nee, blijkbaar probeer je in je script iets te doen dat zo veel geheugen in beslag neemt, dat je deze foutmelding krijgt. Laat eens wat van je scriptje zien?
Dat ie een memory fout geeft ligt niet aan hoe groot het bestand is, maar aan wat het doet. Memory fouten ontstaan vaak bij 'beeldbewerking'. Wat doet jou script?
Update in 1e post ;)
Ik zie zo in eerste instantie geen gekke dingen. Je zou eens wat delen van je script weg kunnen laten en het dan uitvoeren om te zien waar het probleem zit?
Verder moet je effe goed opletten dat je het juiste bestand te pakken hebt, en op welke regel de error ontstaat en dat door includes de regelnummers veranderd. Je moet dus dit bestand en de include als een bestand zien.
En veranderde de foutmelding toen je de memory limit omhoog gooide?
Het enige dat ik kan verzinnen wat in deze code die fout op zou kunnen leveren, is dat het stukje code wat hier uitgevoerd word ook 'activeer_mail.php' is. Dan krijg je dus als $rowacc['activatie'] != "actief", een oneindige loop. Hij blijft dan namelijk activeer_mail.php includen. En opnieuw en opnieuw.
En btw: Als ik de ini set, Verandert er hélémaal niks ;)
Ik kan word op de pagina waarop geinclude word een ini gaan setten, maar mn site bestaat uit heel wat pagina's die een safecheck hebben.
@mark Dat doet hij toch maar 1x..? Ik exit hem daarna, dus.. Moet er misschien include_once in..?
EDIT: Include_once werkt niet..
Gewijzigd op 24/07/2010 21:13:20 door Maestro Roboroads
De loop geld alleen als jouw stuk code ook activeer_mail.php is. Als dat zo is, dan begrijp ik je include niet. Want dan is dat zinloos. Dan voer je een stuk opnieuw uit, wat je al hebt uitgevoerd. Dit zou dan oneindig doorgaan.
De exit zou pas uitgevoerd nadat de oneindige loop van includes klaar zou zijn. Dus deze word niet uitgevoerd. Maar een include_once zou moeten werken. Zo niet; dan is dit niet het probleem.
Dankje!
Werkt het nu wel dan?
Jha, Ik moest even de include van safecheck eruit halen, Nu werkt alles prima! nogmaals bedankt ;)