[php] Array wordt *soms* niet in sessie opgeslagen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Het is een behoorlijk vreemd probleem. Ik maak een array aan ($arr_faq):
code:
1
2
3
4
5
6
7
8
Array (
    [4] Array (
        [lkjslfkjsdlkjsdl] => [sfsdsdfsdfsdsdsdf]
    )
    [6] Array (
        [sadfsdfsdfsdffds] => [sadfsfsdsadsdf]
    )
)

En deze wil ik in een sessie plaatsen:
PHP:
1
array_push ($_SESSION['add']['faq'], $arr_faq);

Vervolgens geef ik de opdracht:
PHP:
1
header("Location:" . $url);


Het probleem
Ik heb eens een stuk of 10x achtereenvolgens dit formulier ingevuld, en soms wordt de array toegevoegd aan de array, en soms niet.

Mogelijke oplossing
Ik vind het niet zo mooi, maar ik doe het volgende tussen de array_push en de header door:
PHP:
1
usleep(200000);

200ms slapen zeg maar. Dit werkt prima, maar vind ik niet de mooiste oplossing.

Mijn vraag:
Ik ben me ervan bewust dat ik hiermee een array kopieer naar een sessie en dat dit (relatief gezien) veel tijd inneemt (de array wordt namelijk ge-memcpy-d naar een andere geheugenruimte). Is dat het probleem dat de array soms wel en soms niet gekopieerd wordt? Wordt de header-functie dan soms eerder uitgevoerd voordat de array_push klaar is?
Is dit dan een bug in php, of kan het zijn dat ze hiervoor bewust gekozen hebben?

Of, en die mogelijkheid schiet me nu te binnen: ligt het aan mij, of aan de IIS6 omgeven?

taste and see that the Lord is good


Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Probeer het eens met een session_write_close() voor de header. Dat wordt in ieder geval de sessie expliciet weg geschreven.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Dat is inderdaad de oplossing, many thanks to you _/-\o_

taste and see that the Lord is good


Acties:
  • 0 Henk 'm!

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Vanmorgen ging ik vrolijk verder met de pagina's en documentatie. Ik keek nog eens naar de pagina waar ik het hierboven over sprak en wat verbaast en bedroeft mij? Het werkt niet meer zoals gister. Ik gebruik tegenwoordig netjes het volgende:
PHP:
1
2
session_write_close();
header('Location: ' . $url);

Maar helaas, het probleem is terug: de data wordt soms wel en soms niet in de SESSION-array toegevoegd. (en ook nog meer niet dan wel :().

Ik dacht ook nog: laat ik geen losse array maken, maar het direct in de SESSION-array toevoegen, dus op deze manier:
PHP:
1
2
3
4
5
6
7
8
// add the faq for each language to the array
$int_insert_no = count($_SESSION['add']['faq']);
        
foreach($arr_lang as $lang) {
    $lang_id = $lang['id'];
    $_SESSION['add']['faq'][$int_insert_no][$lang_id]['q'] = $_POST['question'][$lang_id];
    $_SESSION['add']['faq'][$int_insert_no][$lang_id]['a'] = $_POST['answer'][$lang_id];
}


Kan iemand mij hier nog uitkomst in bieden..?

[ Voor 34% gewijzigd door erkje op 28-10-2004 10:49 ]

taste and see that the Lord is good


Acties:
  • 0 Henk 'm!

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Ik gebruik voor de textarea's htmlArea om er wat opmaak in te stoppen. Ik heb wat getest, maar het lijkt dat zodra htmlArea niet geladen is, het altijd werkt, en als htmlArea wel geladen is, het soms werkt...

[update]
OK, ik gebruik nu tinyMCE als text-area vervanger, dat gaat vaker goed... Althans, niet als je binnen 1ms na de laatst ingevoerde tekst op de button klikt :P

Ook heb ik getest zonder enige wysiwyg editor (gewoon kale textare). Dat werkt altijd...

[ Voor 49% gewijzigd door erkje op 28-10-2004 12:13 ]

taste and see that the Lord is good