[php] plaatjes download faalt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • thrax
  • Registratie: Maart 2000
  • Laatst online: 18-06 22:02
Ik ben een systeempje aan het maken om netwerktraffic in de gaten te kunnen houden. Een server processje logt alles in een database en die data wil ik nu op een webpage zichtbaar maken.

Daarvoor heb ik een php scriptje gemaakt die de data in een plaatje zet. Een aanroep vanuit html is zoiets als dit:

code:
1
[img]"graph.php?year=2003&week=43&interface=8"[/img]


Op een enkele pagina staan een aantal van deze plaatjes, bijvoorbeeld:

code:
1
2
3
[img]"graph.php?year=2003&day=310&interface=8">
<img[/img]
[img]"graph.php?year=2003&month=11&interface=8"[/img]


Dus eentje voor de dag, eentje voor de week en tenslotte eentje voor de maand.

Maar bij het inladen gaat het vaak mis, meestal is er 1 plaatje dat niet goed inlaadt, dit komt zowel voor bij internet explorer als mozilla.

Ik denk dat dit komt door hetvolgende:

De plaatjes worden door de browser multithreaded ingeladen. Het kan dus voorkomen dat de webserver met het genereren van 1 plaatje bezig is, en dat dan de volgende request al binnen komt om het volgende plaatje. Omdat de server slechts 1 script tegelijk uit kan voeren, faalt de request en wordt het plaatje niet ingeladen.

Vraag is dus:

Klopt dit? Hoe kan ik dit oplossen? Of komt het toch door totaal iets anders?

"Ore wa bakemono? Che, ore wa akuma da!"


Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
Nou je php kan echt wel meerdere requests aan. Zelf heb ik laatst een script gemaakt. Dat genereerde ook plaatjes en die deed ie ook allemaal tegelijk.

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

thrax schreef op 17 november 2003 @ 20:49:
De plaatjes worden door de browser multithreaded ingeladen. Het kan dus voorkomen dat de webserver met het genereren van 1 plaatje bezig is, en dat dan de volgende request al binnen komt om het volgende plaatje. Omdat de server slechts 1 script tegelijk uit kan voeren, faalt de request en wordt het plaatje niet ingeladen.

Vraag is dus:

Klopt dit? Hoe kan ik dit oplossen? Of komt het toch door totaal iets anders?
Door http 1.0 te gebruiken in plaats van http 1.1, dan wordt er voor iedere afbeelding een nieuw verzoek naar de server gestuurd, behlave het feit dat het trager gaat denk ik niet dat er veel veranderd.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Paste eens wat code. Misschien dat er een foutje ergens inzit?

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 08:58

thomaske

» » » » » »

Wat zegt je php/apache error log ?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • thrax
  • Registratie: Maart 2000
  • Laatst online: 18-06 22:02
Ik heb ff in mn apache log file gekeken, en die staat vol met de volgende errors:

code:
1
[Tue Nov 18 18:01:17 2003] [notice] child pid 16323 exit signal Segmentation fault (11)


Dit is vaag, want ook als de grafiekjes goed getoond worden zie ik deze errors in mn log file verschijnen. Ook korte scriptjes met alleen een for lusje die wat tekst neerzet geeft soms deze error.

De code die de grafiekjes tekent is een beetje lang, maar de volgende fout functie heeft ook precies hetzelfde probleem, hetzij in mindere mate:


code:
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
function CreateErrorImage($lineA, $lineB, $lineC, $lineD, $lineE)
{
 $imHandle = ImageCreate(500, 170);

 $colorBlack=ImageColorAllocate($imHandle, 0, 0, 0);

 $colorBlack = ImageColorAllocate($imHandle, 0, 0, 0);
 $colorWhite = ImageColorAllocate($imHandle, 255, 255, 255);
 $colorGrey  = ImageColorAllocate($imHandle, 128, 128, 128);

 $colorGreen = ImageColorAllocate($imHandle, 0, 255, 0);
 $colorBlue  = ImageColorAllocate($imHandle, 0, 0, 255);

 ImageFilledRectangle($imHandle, 0, 0, 500, 170, $colorWhite);
 ImageRectangle($imHandle, 0,0, 499, 169, $colorBlack);

 ImageFtText ($imHandle, 10, 0, 5, 15, $colorBlack, "/usr/local/ttf/arial.ttf", "Error occured", array());

 ImageFtText ($imHandle, 10, 0, 5, 30, $colorBlack, "/usr/local/ttf/arial.ttf", $lineA, array());
 ImageFtText ($imHandle, 10, 0, 5, 45, $colorBlack, "/usr/local/ttf/arial.ttf", $lineB, array());
 ImageFtText ($imHandle, 10, 0, 5, 60, $colorBlack, "/usr/local/ttf/arial.ttf", $lineC, array());
 ImageFtText ($imHandle, 10, 0, 5, 75, $colorBlack, "/usr/local/ttf/arial.ttf", $lineD, array());
 ImageFtText ($imHandle, 10, 0, 5, 90, $colorBlack, "/usr/local/ttf/arial.ttf", $lineE, array());

 ImagePng($imHandle);
 ImageDestroy($imHandle);
}

// start ----------------------------------------------------------------------------------------------------


header("Content-type: image/png");

CreateErrorImage("a", "b", "c", "D", "e");
exit();

"Ore wa bakemono? Che, ore wa akuma da!"

Pagina: 1