PHP 5.2.9 Array te groot? Internal 500 error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Goede morgen allemaal,

Ik had een klein tooltje gemaakt en dat werkte goed, totdat ze over zijn gegaan op een andere server. Met Mysql 5 en php 5.

Dit is mijn code,
PHP:
1
2
3
4
5
  $ITEMS = array();
  while ($row = mysql_fetch_array($result))
  {
    array_push($ITEMS, $row);
  }

Ik krijg direct een 500 Internal Server error.
Als ik zorg dat ie na 230 rijen stopt, werkt ie wel. Vanaf 231 rijen krijg ik de error weer.

Dit doet ie wel:
PHP:
1
2
3
4
5
  $r = Array();
for($x=0;$x<3500;$x++)
  array_push($r, Array($x, 1, 2, 3));
print_r($r);
  exit;


Dus is het een geheugenbeperking ofzo? Memory limit staat op 64M.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
heb je al is gezien wat er in 1 $row zit?

Acties:
  • 0 Henk 'm!

  • EDIT
  • Registratie: Januari 2007
  • Laatst online: 22:21
Je zou in de error log van Apache moeten kijken welke error er terug komt.
Daaruit zou je moeten kunnen afleiden waar het probleem zich bevind.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
@wbinn:
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
Array
(
    [0] => 17
    [ID] => 17
    [1] => a
    [blok] => a
    [2] => 1.1
    [bouwnummer] => 1.1
    [3] => 1
    [woningtype] => 1
    [4] => 252000
    [prijs] => 252000
    [5] => Vesteda
    [naam] => Vesteda
    [6] => 
    [adres] => 
    [7] => 
    [woonplaats] => 
    [8] => 
    [telefoonnummer] => 
    [9] => 
    [mobielnummer] => 
    [10] => 
    [optietot] => 
    [11] => 1
    [status] => 1
    [12] => -1
    [makelaar] => -1
    [13] => 
    [datumgesprek] => 
    [14] => 
    [tekenafspraak] => 
)


Logfiles kan ik niet bij volgens mij

[ Voor 3% gewijzigd door Guillome op 04-09-2009 09:26 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
`t Ligt trouwens aan de code erna, ik ga even kijken waar de fout in zit. Het array wordt wel goed aangemaakt...

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Kijk eens of 'ie niet in die while blijft hangen. Je for-loop gaat namelijk dik over de 230 rijen heen.....

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zie je uberhaupt verder wel errors in beeld? Zo nee, fix dat maar eerst.

{signature}


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Tuurlijk zie ik errors, maar door dit laat ie geen php error zien, maar een 500 internal server fout.

@vrieler, nee hij blijft niet hangen, `t is een For lus. Ik ben de fout bijna op het spoor.

[ Voor 5% gewijzigd door Guillome op 04-09-2009 09:56 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 04 september 2009 @ 09:41:
Kijk eens of 'ie niet in die while blijft hangen. Je for-loop gaat namelijk dik over de 230 rijen heen.....
...maar in die array in de for-loop gaat veel minder data om. :P Niet dat dat verder een probleem mag zijn, ik heb veel grotere arrays met succes kunnen bewerken in PHP. De fout zal inderdaad wel ergens anders in zitten.
Guillome schreef op vrijdag 04 september 2009 @ 09:53:
Tuurlijk zie ik errors, maar door dit laat ie geen php error zien, maar een 500 internal server fout.

@vrieler, nee hij blijft niet hangen, `t is een For lus. Ik ben de fout bijna op het spoor.
Je bent toch niet in IE bezig met friendly error messages he? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Firefox :)

Als ik dit bovenin de for loop zet doet ie het wel.

PHP:
1
2
3
4
5
6
for ($x = $ID_Start; $x < $_TOTAL + $ID_Start; $x++)
{
  if (isset($ITEMS[$i]) && $ITEMS[$i]["ID"] == $x) { $row = $ITEMS[$i]; $i++; } else $row = Array("ID" => $x);

if ($x >= 185) 
continue;

[ Voor 99% gewijzigd door Guillome op 04-09-2009 10:07 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tijdens het debuggen moet je meer dan een error 500 kunnen zien, want anders schiet het nooit op. Ergo, fix dat maar eerst.

{signature}


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Doh daar ben ik mee bezig :P Ik weet alleen nog niet wat die error 500 genereert. Als ik dat weet ben ik een hele stap verder.

[ Voor 63% gewijzigd door Guillome op 04-09-2009 10:03 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Kijk even naar wat er in die rij staat inderdaad.

En zet even in je code:

error_reporting(E_ALL);
ini_set('display_errors', 'on');

Heb je beschikking tot een control-panel? DirectAdmin en Plesk bieden sowieso inzage in de access en error-log.

P.S. Wie is je hostert?

[ Voor 5% gewijzigd door Verwijderd op 04-09-2009 10:05 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Wat ik al zeg: dat staat al goed, maar dat maakt niet uit. Dit is geen PHP output maar een apache output om het zo maar te zeggen.
Als ik asd in de code zet krijg ik prachtig
Parse error: syntax error, unexpected T_VARIABLE in /public_html/index.php on line 21
te zien.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Guillome schreef op vrijdag 04 september 2009 @ 10:06:
Wat ik al zeg: dat staat al goed, maar dat maakt niet uit. Dit is geen PHP output maar een apache output om het zo maar te zeggen.
Als ik asd in de code zet krijg ik prachtig

[...]

te zien.
Sta je op een server met een controlpanel? Zo ja, welke en wie is je hoster?

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
1: ja, zit er nu in.
2: geen idee, extern.

edit:
[Fri Sep 04 09:28:11 2009] [error] [client 194.121.149.130] ModSecurity: Output filter: Response body too large (over limit of 524288, total not specified). [hostname "xx.nl"] [uri "/index.php"] [unique_id "SqDBi8P4TQUAAC7bH-wAAAAQ"]
[Fri Sep 04 09:28:11 2009] [error] [client 194.121.149.130] File does not exist: /public_html/500.shtml
Uit de apache log

[ Voor 91% gewijzigd door Guillome op 04-09-2009 10:19 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Guillome schreef op vrijdag 04 september 2009 @ 10:17:
1: ja, zit er nu in.
2: geen idee, extern.
Welk controlpanel? Plesk of DirectAdmin? Daar kan ik je mee helpen.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
DirectAdmin :)

Lijkt er op dat de pagina te groot is??

[ Voor 60% gewijzigd door Guillome op 04-09-2009 10:21 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Zit daar totaal onlogisch.

Klik op "Site Summary / Statistics / Logs". Daarna zie je de logs al ;)

Laat even weten of je ze kunt vinden!

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ja daar in die logs kwam ik dat tegen :) In de Apache Error Log

Wel vreemd dat de tijd van een uur geleden is. Update ie dat niet realtime?

[ Voor 38% gewijzigd door Guillome op 04-09-2009 10:25 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Guillome schreef op vrijdag 04 september 2009 @ 10:23:
Ja daar in die logs kwam ik dat tegen :) In de Apache Error Log

Wel vreemd dat de tijd van een uur geleden is. Update ie dat niet realtime?
Juist, en daar stata jouw 500 error uitgelegd. Show us :)

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ja dat schreef ik net:
[Fri Sep 04 09:28:11 2009] [error] [client 194.121.149.130] ModSecurity: Output filter: Response body too large (over limit of 524288, total not specified). [hostname "xx.nl"] [uri "/index.php"] [unique_id "SqDBi8P4TQUAAC7bH-wAAAAQ"]
[Fri Sep 04 09:28:11 2009] [error] [client 194.121.149.130] File does not exist: /public_html/500.shtml
Die tijd klopt btw, staat gewoon een uur vroeger.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Guillome schreef op vrijdag 04 september 2009 @ 10:26:
Ja dat schreef ik net:

[...]


Die tijd klopt btw, staat gewoon een uur vroeger.
http://wordpress.org/support/topic/151319#post-674700

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20:31
Guillome schreef op vrijdag 04 september 2009 @ 09:10:
PHP:
1
2
3
4
5
  $ITEMS = array();
  while ($row = mysql_fetch_array($result))
  {
    array_push($ITEMS, $row);
  }
Ik kan me nauwelijks voorstellen dat het een 500-error zou geven, maar array_push zorgt wel voor onnodige overhead. Doe het liever zo:

PHP:
1
2
3
4
5
  $ITEMS = array();
  while ($row = mysql_fetch_array($result))
  {
    $ITEMS[] = $row;
  }


edit: Als ik me niet heel erg vergis staat hier boven mij de oplossing :)

Die tijd zou te maken kunnen hebben met het al dan niet rekening houden met de zomertijd of omdat de tijdzone op GMT staat ingesteld.

[ Voor 17% gewijzigd door doeternietoe op 04-09-2009 10:37 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ok als dat beter is doe ik het zo :)
Maar @Dennis:
`t Zal erg zijn, maar waar moet ik die rule SecResponseBodyLimit invullen, das geen htaccess toch?

Edit:
De oplossing staat er wel :P Maar ik weet niet waar ik SecResponseBodyLimit kan invullen

[ Voor 24% gewijzigd door Guillome op 04-09-2009 10:41 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Guillome schreef op vrijdag 04 september 2009 @ 10:34:
Ok als dat beter is doe ik het zo :)
Maar @Dennis:
`t Zal erg zijn, maar waar moet ik die rule SecResponseBodyLimit invullen, das geen htaccess toch?

Edit:
De oplossing staat er wel :P Maar ik weet niet waar ik SecResponseBodyLimit kan invullen
Probeer het eens?

Syntax: SecResponseBodyLimit NUMBER_IN_BYTES

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20:31
Hij moet in de .htaccess of als het daar niet werkt in de httpd.conf. Maar de vraag is natuurlijk of jij toegang tot die laatste hebt.

Acties:
  • 0 Henk 'm!

Verwijderd

doeternietoe schreef op vrijdag 04 september 2009 @ 10:50:
Hij moet in de .htaccess of als het daar niet werkt in de httpd.conf. Maar de vraag is natuurlijk of jij toegang tot die laatste hebt.
Standaard wel op DirectAdmin. Elke gebruiker heeft een eigen httpd.conf.

/usr/local/directadmin/data/users/<USERNAME>/httpd.conf

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nee, je zei "Lijkt er op dat de pagina te groot is??". En dan moeten wij dus raden dat je dat baseert op een concretere foutmelding.
Guillome schreef op vrijdag 04 september 2009 @ 10:06:
Wat ik al zeg: dat staat al goed, maar dat maakt niet uit.
En ook dat heb je niet eerder expliciet aangegeven.

Je houd op een aantal plekken informatie voor jezelf en/of parafraseert foutmeldingen, en vervolgens moeten wij raden dat je zelf meer info hebt en dubbele vragen stellen om het eruit te krijgen, en dat schiet niet op. :>

{signature}


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 00:27
Voutloos schreef op vrijdag 04 september 2009 @ 11:15:
[...]
Nee, je zei "Lijkt er op dat de pagina te groot is??". En dan moeten wij dus raden dat je dat baseert op een concretere foutmelding.
Die melding had hij om 10:19 in deze post erbij gezet...

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
En "tuurlijk zie ik errors" lijkt me expliciet genoeg :)
Ik zal het even proberen in de .htaccess!

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Error 500's krijg je ook weleens terug als de execution_time overschreden wordt bij apache. Ook is er een kans dat er 'suhosin' draait, een soort hardening patch voor PHP die een en ander veiliger moet maken. Daarin zitten ook limieten voor groottes van arrays ed. Hoewel dat volgens mij een lege pagina zou moeten geven (dat gebeurt bij mij althans) kan een error 500 hier ook wel achter zitten (hangt van config af denk ik).

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ik heb geen toegang tot de httpd.conf en in de .htaccess pakt ie m niet.

Ik zal de pagina zelf moeten opsplitsen in kleinere paginas (pagina nummer etc)

[ Voor 37% gewijzigd door Guillome op 04-09-2009 11:46 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Thanks voor alle hulp trouwens :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1