Avatar billede the_saint Nybegynder
15. august 2010 - 20:46 Der er 16 kommentarer og
1 løsning

Meget lange arrays

Hej Exp.

Jeg døjer med et lille problem..

Jeg laver omtrent 10.000 checkboxes som et array: <input type="checkbox" name="foo[]" value="1" />

På min maskine fungere det fint nok, men på min test server fungere det ikke -det ser ud til at den bare dropper alt i $_POST efter x antal rækker i arrayet..

Hvilke php / apache settings kan have indflydelse på det?
Avatar billede erikjacobsen Ekspert
15. august 2010 - 22:08 #1
Lav en phpinfo.php: 

  <?php phpinfo(); ?>

og kig på post_max_size -selv om det lyder lidt underligt...
Avatar billede repox Seniormester
15. august 2010 - 22:09 #2
Du må af med noget kode, andet end dit HTML input element.
Vi kan kun gisne om hvordan din kode kan have indflydelse på POST elementerne.

Er der andre input elementer i din kode end checkbokse?
Avatar billede showsource Seniormester
15. august 2010 - 22:22 #3
10000 checkboxe ?

MEGET LANGT UDE, OG JA HELT VILDT LANGT UDE !
Avatar billede repox Seniormester
15. august 2010 - 23:22 #4
#3
Man må håbe at sessionen ikke timer ud inden, man er færdig med at krydse af ;)
Avatar billede the_saint Nybegynder
16. august 2010 - 06:55 #5
#1: Den har jeg sat op til 256M (har lige verificeret det med phpinfo) netop for at se om det løste problemet.

#2: Koden har ikke meget relevans da det mere er et php opsætnings problem tror jeg.. Men jeg har lavet det her lille test eksempel som fejler på samme måde:

http://pastebin.org/532432


#3: Hvorfor? Det er til en mail funktion i et CRM system, hvor man efter endt søgning skal have mulighed for at fjerne enkelte modtagere.

#4: De er pre-checked, og skal kun uncheckes hvis modtageren ikke skal have mailen. Der vil sjældent være 10.000 checkboxes, men det er hvad kravet går på - så det nytter ikke noget at de pludselig skal sende en mail til 10000 modtagere og så fejler systemet...
Avatar billede showsource Seniormester
16. august 2010 - 07:24 #6
Det gi'r ikke rigtig nogen mening at ha' en side med 10000 checkboxe.
Avatar billede the_saint Nybegynder
16. august 2010 - 07:30 #7
#6 Så længe du ikke kan skrive noget konstruktivt så lad være noget at skrive noget...!
Avatar billede repox Seniormester
16. august 2010 - 07:38 #8
#5
Det er jo rablende sindsygt at introducere en så omfattende manuel frasortering af modtagere...
Men uanset, så mener jeg #1 har fat i de rigtige - men det må jo komme an på en prøve; du må teste med reducerede mængder og så måle størrelsen på den størst mulige datamængde du kan få igennem...
Avatar billede the_saint Nybegynder
16. august 2010 - 07:53 #9
#8 Nu er listen baseret på en søgning lavet af brugeren, det er kun i specielle tilfælde at nogle af checkboxsne skal uncheckes.. Men det er vel også ligemeget hvad det skal bruges til? Mit problem gik på at jeg ikke kunne sende 10.000 checkboxes fra min test server, men kan sagtens fra min lokal maskine.

post_max_size er sat til 8M på min lokal maskine, og 256M på min test server, jeg tror ikke det har noget med det at gøre..

Desuden, så truncater den ALTID ved 1000 elementer i arrayet.
Avatar billede repox Seniormester
16. august 2010 - 09:05 #10
Må vi se din phpinfo() på den server som problemet opstår på?
Avatar billede erikjacobsen Ekspert
16. august 2010 - 09:21 #11
Evt lav en test, som på http://n0p.com/916406.php

hvor koden er:

<?php

  print_r($_POST);

  print "<form method=\"post\">\n";
  print "<input type=\"submit\"><br>\n";
  for ($i=1;$i<=10000;$i++) {
    if ($i%2==0) {
      print "<input type=\"checkbox\" name=\"foo[]\" checked>\n";
    } else {
      print "<input type=\"checkbox\" name=\"foo[]\">\n";
    }
  }
  print "</form>";

?>
Avatar billede repox Seniormester
16. august 2010 - 09:26 #12
#11
Jeg mistænker at han bliver begrænset af Suhosin, hvilket hurtigt kunne afgøres gennem phpinfo().
Avatar billede the_saint Nybegynder
16. august 2010 - 09:29 #13
http://stores.streetsurfing.dk/checkboxes/phpinfo.php
http://stores.streetsurfing.dk/checkboxes/checkboxes1.php (erik's test)
http://stores.streetsurfing.dk/checkboxes/checkboxes2.php (Min test)


Suhosin har jeg ikek på min lokal maskine, og heller ikke på min anden test server hvor det fungere.. Så kunne godt være pga det.
Avatar billede repox Seniormester
16. august 2010 - 09:31 #14
#13
Ganske rigtigt - i din phpinfo() har du en vaiabel kaldet suhosin.post.max_vars som er sat til 1000, hvilket betyder at Suhosin truncater dine postdata ved 1000 elementer.

Det er Suhosin der begrænser dig - ikke din kode.
Avatar billede repox Seniormester
18. august 2010 - 10:01 #15
#0
Fik du løst dit problem?
Avatar billede the_saint Nybegynder
04. oktober 2010 - 07:30 #16
Af en eller anden årsag fik jeg ikke nogen email/jeg har fået overset ang svar #14 :|

Jeg lavede det på en anden måde til sidst - men det er nok rigtigt hvad repox siger ang. suhosin :) Smider du et svar?
Avatar billede repox Seniormester
04. oktober 2010 - 07:53 #17
Det fik du her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester