Hoi hoi,

Ik ben een app developer en gebruik php->sql zodat gebruikers informatie kunnen toevoegen en ophalen.

Nu gebruikte ik eerder per sql query een apart php script.
Echter heb ik nu een manier gevonden waarop ik automatisch in php een juiste query kan generen
en ik dus maar 1 script nodig heb om al mijn quaries uit te krijgen (wat mij een hoop tijd scheelt, omdat ik niet per query een nieuw script hoef te schrijven wat die uitvoert).

Alleen wil ik dit nu in al mijn apps gebruiken, voor elke knop die iets doet waarvoor sql nodig is.
De informatie word dan wel uit verschillende tabels gehaald, maar alle requests worden gegeneerd en doorgestuurd via 1 php script. (als ik informatie terug wil ontvangen, gaat dit via een echo, die ik in mijn app weer omzet in de juiste elementen)

Oftewel dit kan dus betekenen dat ik 100 requests tegelijk krijg op hetzelfde php script.
Nu mijn vraag: als 100 mensen tegelijk informatie opvragen, via hetzelfde php script, wat een echo geeft van de informatie, gaat dit dan door elkaar lopen? kan dit? levert het wel problemenen op als 100 mensen tegelijk iets schrijven via hetzelfde php script etc?

Hoop dat het een beetje duidelijk is wat bedoel :)
Als 100 mensen 100 query's op eenzelfde seconde proberen te verkrijgen is de kans groot dat je SQL Server down gaat. Je zult (in de meeste gevallen) een error krijgen met To Many Connections:
http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

Maar dat ligt uiteraard aan je server, hoe die instellingen staan en hoeveel die aankunnen.
Peter Flos op 13/10/2014 14:42:48

Als 100 mensen 100 query's op eenzelfde seconde proberen te verkrijgen is de kans groot dat je SQL Server down gaat. Je zult (in de meeste gevallen) een error krijgen met To Many Connections:
http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

Maar dat ligt uiteraard aan je server, hoe die instellingen staan en hoeveel die aankunnen.


maar het maakt verder niet uit of dit allemaal via 1 php scripts verloopt of via een aantal verschillende php scripts?

Hoe is het dan mogelijk dat stel je heb 1mil gebruikers (i wish), die allemaal door pagina's aan t bladeren zijn op je app (waarvan de informatie allemaal via queries gehaalt moet worden) dat het dan alsnog blijft draaien?
Meerdere of zwaardere database-servers gebruiken (meer RAM), en caching gebruiken.
Uiteraard maakt dat wel uit. Zie het onderstaande voorbeeld:

- Er zijn 100 mensen
- Er zijn 20 pagina's
- Er zijn 50 standaard query's, waarbij er op elke pagina nog 10 nodig zijn

Dan krijg je dit:
(50 + 10) x 100
Anders krijg je:
100 x 100

Stel, even als voorbeeld. Het is een app waarbij je een Account hebt, en er een Premium is (Denk aan Spotify), met een verloop datum.
Op de pagina met Volgers hoef je niet met een Query te achterhalen of iemand premium heeft, omdat je die informatie daar niet gebruikt.

Als iets 1 miljoen gebruikers heeft, zal die het niet snel met 1 Server redden.

Toevoeging:
Zie ook wat Aar zegt, dat is ook een oplossing.
Wat is eigenlijk het maximaal aantal database-requests per pagina-aanroep? Wat is een goede richtlijn?
Dat ligt aan de instellingen van je server, volgens mij kan je met PHP.ini dat zelfs aanpassen.

Ik zeg altijd: haal niet meer op dan nodig is. Als je 100 requests nodig hebt, heb je die gewoon nodig. Als je er 20 nodig hebt maar er 100 gebruikt, dan is het zonde dat je server ervan traag (kan) worden.
>> Dat ligt aan de instellingen van je server, volgens mij kan je met PHP.ini dat zelfs aanpassen.

Oké, maar dat bedoelde ik niet. Ik bedoelde dus... op een normale site, bijv. zoals deze... hoeveel database-requests worden er dan gedaan. Wat is gemiddeld? Praat je over 1 tot 10, of eerder 30 tot 50? Ik kan me voorstellen dat als je 50 requests per keer doet dat je site dan traag wordt? Of niet? Dus vandaar mijn vraag of er een soort van "maximum" is om te voorkomen dat je je eigen site onderuit trekt.
Peter Flos op 13/10/2014 15:05:51

Uiteraard maakt dat wel uit. Zie het onderstaande voorbeeld:

- Er zijn 100 mensen
- Er zijn 20 pagina's
- Er zijn 50 standaard query's, waarbij er op elke pagina nog 10 nodig zijn

Dan krijg je dit:
(50 + 10) x 100
Anders krijg je:
100 x 100

Stel, even als voorbeeld. Het is een app waarbij je een Account hebt, en er een Premium is (Denk aan Spotify), met een verloop datum.
Op de pagina met Volgers hoef je niet met een Query te achterhalen of iemand premium heeft, omdat je die informatie daar niet gebruikt.

Als iets 1 miljoen gebruikers heeft, zal die het niet snel met 1 Server redden.

Toevoeging:
Zie ook wat Aar zegt, dat is ook een oplossing.


ok oftewel een server kan het niet aan als er simpelweg teveel queries zijn?
Hoe doet een druk bezocht forum dit dan bijvoorbeeld?
Maar goed als dat gewoon een hardware limiet is kan ik er niet zoveel aan doen, ik wil voornamelijk zorgen dat mijn scripts niet voor problemen gaan zorgen later.

even terug komend op mijn php vraag:
stel je doet exact even veel queries, heeft het nut om deze te verdelen over zeg 10 scripts of kan ik zonder problemen alles via 1 php script dit oplossen? (kon dit niet uit je antwoord opmaken)
Het scheelt me namelijk veel werk (anders moet ik voor elke query een apart php script maken).

(als ik het via een script doe kan ik namelijk variable doorsturen vanwaaruit hij in php automatisch de juiste query statement maakt)

Wat bedoel je met 1 script en 10 scripts? Wat versta jij onder een script?

Je moet proberen met zo min mogelijk queries zoveel mogelijk van de gewenste data binnen te halen.
@Ozzie: Ik schat tussen de 10 en de 30, nogal globaal genomen. 50 queries per keer zeggen niet dat je site traag wordt. Dat hangt af van hoeveel personen er zijn en wanneer die klikken. (Als iemand 1 seconde later klikt als de voorganger, scheelt het al)
Dus een echt Maximum is er niet, omdat dat afhangt van het aantal gebruikers op je site.

Een server kan het niet aan als het volgens de server overschreden wordt. Ik heb het zelf eens meegemaakt; via een cronjob 20 queries elke seconde uitvoeren en 15 gebruikers online aan het klikken. 50% van de tijd kreeg ik een melding met To Many Connections, de andere 50% niet. Zodoende kwam ik tot de conclusie dat het ligt aan wanneer je klikt.

Het maakt niet uit of je het volgende doet:

function_1.php

<?php
$CountIfExist = mysqli_query($con,"SELECT id FROM users WHERE id = '1'");
?>


function_2.php

<?php
$CountUsers = mysqli_query($con,"SELECT id FROM users");
?>


functions.php

<?php
include 'function_1.php';
include 'function_2.php';
?>


Of dat je doet:
functions.php

<?php
$CountIfExist = mysqli_query($con,"SELECT id FROM users WHERE id = '1'");
$CountUsers = mysqli_query($con,"SELECT id FROM users");
?>


Dat maakt geen enkel verschil. Wat wel een verschil maakt is dit:

function_2.php

<?php
$CountUsers = mysqli_query($con,"SELECT id FROM users");
?>


Of:
function_2.php

<?php
$CountUsers = mysqli_query($con,"SELECT * FROM users");
?>


In voorbeeld 1 haalt de Query enkel het ID op, in voorbeeld 2 haalt de Query alles op.

Reageren