bassebhuMedlem sedan nov. 20016 480 inlägg Jag har fått felmeddelandet "To many connections" ibland från mysql_connect(). Sedan tar det 10-20 minuter igen innan den börjar att hämta ut mysql-data som den ska igen. Jag inkluderade en fil som hämtar databasinfo i 4 frames iofs så det kanske blev trångt när många hämtningar görs samtidigt, men jag byggde om det så att hämtningarna bara behövs i 2 frames, men det borde den ju klara utan problem. Felmeddelandet återkom trots att det bara är jag som testkör sidan. Det är ett seriöst webbhotell så de borde inte ha en allt för extremt låg inställning. mysql_connect() sägs ju stänga själv när den är klar, men jag lade för säkerhets skull in mysql_close() i slutet på varje sida. (OBS! Endast en databasöppning görs per sida.)
Felet fanns fortfarande där. Koden som körs är inte speciellt krävande heller tycker jag.
Jag bytte till mysql_pconnect() och då försvann problemet, men efter spaning så är det många som inte rekommenderar pconnect.
Det är fortfarande bara jag som testar så felet kanske kommer även med pconnect om det är många användare som belastar.
Man kan visserligen välja att inte visa felmeddelandet, men det är inte så hippt om det inte skrivs ut någon databasinformation då det mesta av textinnehållet ligger där.
Har ni några andra tips på lösning eller är pconnect det jag bör köra?
PeddaMedlem sedan juni 20006 032 inlägg Låter konstigt, mysql_connect() är som standard 100 anslutningar. Och fler lär du ju inte ha.
Det har inte råkat hamna någon mysql_connect inne i en loop som ställer till det?
bassebhuMedlem sedan nov. 20016 480 inlägg Nepp, ingen loop alls. Det ligger inkkluderat i en fil överst på varje sida. Jag testade iofs väldigt frekvent med många siduppdateringar, men fortfarande så ska det ju kunna vara 100 stycken som gör så samtidigt tycker man.
bassebhuMedlem sedan nov. 20016 480 inlägg Inc-filen:
<?php
// Checking that file IS included -->
if(!defined('INC_C')) {
die("Hacking attempt");
}
// Start session -->
session_start();
// Set Locate -->
setlocale(LC_ALL, "sv_SE");
// Mysql settings -->
$mysqlHost = "localhost";
$mysqlName = "namn";
$mysqlPass = "lösen";
$mysqlDatabase = "databas";
// ob start -->
ob_start();
// Database connect -->
$link = mysql_pconnect($mysqlHost,$mysqlName,$mysqlPass);
// Database select -->
mysql_select_db("$mysqlDatabase");
//[...]
En sida med inludering:
<?php
// For security -->
define('INC_C', true);
// Include settings -->
include("inc.php");
// [...]
Förekommer visserligen en hel del sql-frågor också, men det där är den enda databaskopplingen som sker och det kan omöjligt ha råkat loopas någonstans.
Har som sagt kört med mysql_connect() innan och det var då problemet uppstod.
bassebhuMedlem sedan nov. 20016 480 inlägg Det finns inget sätt som man kan se antal anslutningar eller åtminstone hur många som tillåts?
Annars måste jag kontakta webbhotellet.
Men hur många samtida anslutningar ska mysql klara av då? Jag läste nåt om typ 500-1000. Det låter ju jättelite. Så inga siter med fler än 1000 aktiva besökare använder mysql-databas? :o
PeeerMedlem sedan mars 20025 907 inlägg
bassebhu skrev:
Men hur många samtida anslutningar ska mysql klara av då? Jag läste nåt om typ 500-1000. Det låter ju jättelite. Så inga siter med fler än 1000 aktiva besökare använder mysql-databas? :o
Samtidiga anslutningar är inte samma sak som aktiva besökare. När servern har processat sidan och skickat resultatet till dig så stängs anslutningen mot mysql ner. Den är alltså inte öppen medans du sitter och läser den här tråden ex.
bassebhuMedlem sedan nov. 20016 480 inlägg Jo, det förstår jag väl, men jag menar: bara 100 besökare kan hämta information samtidigt enligt defaultinställningen?
Finns det något ungefärligt maxantal anslutningar som mysql sägs klara av samtidigt?
Jag borde som sagt ligga ljusår ifrån att få det där felmeddelandet.
Jag kontaktade webbhotellet igår och de sa visserligen att de hade haft en del prestandaproblem med php/mysql nyligen och de hade personer ute för att fixa det.
Det känns ändå oroande att siten inte ska klara av ett större antal besökare. Åtminstone inte på det webbotellet.
"mysql_pconnect() acts very much like mysql_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()). "
dock kanske detta är löst? Men annars kanske det är att du använder mysql_pconnect() utan att stänga anslutningen sen?
bassebhuMedlem sedan nov. 20016 480 inlägg Problemet uppstod innan jag bytte till pconnect, men nu verkar det ha lugnat ner sig på hotellet så jag bytte tillbaka till connect. Hur stänger man anslutningen om man använder pconnect då?
"Men annars kanske det är att du använder mysql_pconnect() utan att stänga anslutningen sen?"
Tanken med pconnect är väl att man _inte_ stänger anslutningen?