انجمن هاي تخصصي پارسيگ

نسخه‌ي كامل: مشکل در کارکرد یک سیستم PHP
شما هم اكنون متن قالب بندي نشده را مي‌بينيد.مشاهده‌ي نسخه‌ي اصلي
صفحات: 1 2
سلام
من یک سیستم CMS خاص برنامه نویسی شده با PHP دارم.
که در واقع تولید لینک می کنه.
بعد از نصب روی هاست بعد از چند بار کار کردن پیغام زیر رو داده و حدود چند دقیقه از کار می افته:
User smsm_link has already more than 'max_user_connections' active connections
باید چکار کرد
smsm_link اسم یوزر بانک اطلاعاتی است. در ضمن تو لوکال همچین مشکلی نداشت.
ممنون می شم در رفع این مشکل کمکم کنید.
بانک اطلاعاتی MYSQL است
با تشکر!
خوش آمد می گم خدمت شما دوست گرامی !
ببین ، یه سری محدودیت هایی روی هاست واقعی هست که توی هاست های لوکال نیست .
یکیش همین تعداد کانکشن ها به مای اس کیو ال هست .
در برنامه نویسی پی اچ پی بعد از هر بار استفاده از تابع mysql_connect که عمل کانکشن زدن به بانک اطلاعاتی رو به عهده داره وقتی کار مون با دیتا بیس تموم شد باید یه mysql_close هم داشته باشیم .
سرور اجازه نمی ده از یه تعداد خاصی بیشتر کانکشن باز داشته باشی !
حالا اگه سی ام اس معمولی موجود در اینترنته که باید بررسی کنی اگر هم سفارشی برات نوشتن باید به برنامه نویسش بگی که کدش رو اصلاح کنه .
به نظر من ایراد اینحاست
موفق باشی
7272
سلام و ممنون از شما
پس مشکل از خود سیستم CMS است و نه از سرور آیا درست برداشت کرده ام.
و این که این مشکل رو میشه با بررسی کد های سیستم CMS رفع کرد؟
البته چون من با PHP چندان آشنا نیستم (تا حدودی آشنایی) آیا می تونم با جستجوی کلماتی کلیدی مثلا 'max_user_connections' در میان کد های سیستم CMS رفع مشکل کنم.
آیا اصولا این روش درست است. یا اینکه روش دیگری پیشنهاد می کنید.
با تشکر فراوان
سلام و خواهش می کنم
بله ، دقیقا مشکل از سی ام اس تو هست .
بله ، با بررسی سی ام اس می شه .
می تونید با جستجوی کلمه ی mysql_connect این ایرادات رو پیدا کنید ولی در نهایت برای رفعش باید پی اچ پی بلد باشید
چون دانش پی اچ پی ندارید این روش اصولا توصیه نمی شه
بازم سوال داشتید این فروم متعلق به خودتونه !
72
با سلام و تشکر فراوان از لطف شما.
من این واژه رو جستجو کردم. جالب بود چیزی با این نام تو کد ها نبود. واسه من که عجیب بود.
آیا کلمه مهم تر و کلیدی تری رو شما پیشنهاد می کنید. البته می دونم که بدون کدها این خواسته من بزرگ است اما ممنون می شم کمکم کنید.
در ضمن این سیستم از adodb و smarty (اگه اشتباه نکنم!! به عنوان "کتابخانه") استفاده می کند.
با تشکر
اینطوری نمی شه گفت !
به طور مثل اگه بتونید سورس یکی از صفحات رو بزارید بهتره !
چون واقعا نمی شه که اینطوری اظهار نظری کرد !
موفق باشید
72
با سلام و تشکر از شما.
کد ها تعدادشون نسبتا زیادن.
دقیقا هم نمی دونم چی بذارم اما چند نمونه انتخاب کردم که به نظرم مهمتر بودن و بخشهایی از اون رو گذاشتم امیدوارم کارگشا باشه:

فایل config :

//LIMIT OF RECORDS THAT SELECTED FROM DATABASE
$config['limit'] = $ini->read('WEBSITE','limit');
با سلام و تشکر از شما.
کد ها تعدادشون نسبتا زیادن.
دقیقا هم نمی دونم چی بذارم اما چند نمونه انتخاب کردم که به نظرم مهمتر بودن و بخشهایی از اون رو گذاشتم امیدوارم کارگشا باشه:

فایل config :

//LIMIT OF RECORDS THAT SELECTED FROM DATABASE
$config['limit'] = $ini->read('WEBSITE','limit');
فایل adodb-session:

function adodb_sess_gc($maxlifetime)
{
global $ADODB_SESS_DEBUG, $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;

if ($ADODB_SESSION_EXPIRE_NOTIFY) {
reset($ADODB_SESSION_EXPIRE_NOTIFY);
$fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
$savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
$rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < " . time());
$ADODB_SESS_CONN->SetFetchMode($savem);
if ($rs) {
$ADODB_SESS_CONN->BeginTrans();
while (!$rs->EOF) {
$ref = $rs->fields[0];
$key = $rs->fields[1];
$fn($ref,$key);
$del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
$rs->MoveNext();
}
$ADODB_SESS_CONN->CommitTrans();
}
} else {
$qry = "DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time();
$ADODB_SESS_CONN->Execute($qry);

if ($ADODB_SESS_DEBUG) ADOConnection::outp("<p69b>Garbage Collection</b>: $qry</p>");
}
// suggested by Cameron, "GaM3R" <gamr@outworld.cx>
if (defined('ADODB_SESSION_OPTIMIZE')) {
global $ADODB_SESSION_DRIVER;

switch( $ADODB_SESSION_DRIVER ) {
case 'mysql':
case 'mysqlt':
$opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
break;
case 'postgresql':
case 'postgresql7':
$opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;
break;
}
if (!empty($opt_qry)) {
$ADODB_SESS_CONN->Execute($opt_qry);
}
}

$rs = $ADODB_SESS_CONN->SelectLimit('select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL,1);
if ($rs && !$rs->EOF) {

$dbt = reset($rs->fields);
$rs->Close();
$dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbt);
$t = time();
if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
global $HTTP_SERVER_VARS;
$msg = "adodb-session.php: Server time for webserver {$HTTP_SERVER_VARS['HTTP_HOST']} not in synch: database=$dbt, webserver=".$t;
error_log($msg);
if ($ADODB_SESS_DEBUG) ADOConnection::outp("<p>$msg</p>");
}
}

return true;
}
adodb-pear.inc فایل:


function &connect($dsn, $options = false)
{
if (is_array($dsn)) {
$dsninfo = $dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
switch ($dsninfo["phptype"]) {
case 'pgsql': $type = 'postgres7'; break;
case 'ifx': $type = 'informix9'; break;
default: $type = $dsninfo["phptype"]; break;
}

if (is_array($options) && isset($options["debug"]) &&
$options["debug"] >= 2) {
// expose php errors with sufficient debug level
@include_once("adodb-$type.inc.php");
} else {
@include_once("adodb-$type.inc.php");
}

@$obj =&NewADOConnection($type);
if (!is_object($obj)) return new PEAR_Error('Unknown Database Driver: '.$dsninfo['phptype'],-1);

if (is_array($options)) {
foreach($options as $k => $v) {
switch(strtolower($k)) {
case 'persistent': $persist = $v; break;
#ibase
case 'dialect': $obj->dialect = $v; break;
case 'charset': $obj->charset = $v; break;
case 'buffers': $obj->buffers = $v; break;
#ado
case 'charpage': $obj->charPage = $v; break;
#mysql
case 'clientflags': $obj->clientFlags = $v; break;
}
}
} else {
$persist = false;
}

if (isset($dsninfo['socket'])) $dsninfo['hostspec'] .= ':'.$dsninfo['socket'];
else if (isset($dsninfo['port'])) $dsninfo['hostspec'] .= ':'.$dsninfo['port'];

if($persist) $ok = $obj->PConnect($dsninfo['hostspec'], $dsninfo['username'],$dsninfo['password'],$dsninfo['database']);
else $ok = $obj->Connect($dsninfo['hostspec'], $dsninfo['username'],$dsninfo['password'],$dsninfo['database']);

if (!$ok) return ADODB_PEAR_Error();
return $obj;
}
صفحات: 1 2
آدرس اصلي