اين انت اخي Internet plus
انت تقول ان delete و update صعبة على السيرفر
ما هي برمجة المتواجدون الآن بقواعد البيانات بدون ضغط على السيرفر !؟
اين انت اخي Internet plus
انت تقول ان delete و update صعبة على السيرفر
ما هي برمجة المتواجدون الآن بقواعد البيانات بدون ضغط على السيرفر !؟
إن شاء الله سأكتب سكريبتا لكنني هذه الأيام مشغول جدا .. آسف معلش ..
__________________
....
محمد حسام
انترنت بلس
يالله وينك أخ انترنت بلس
انا إلى الان منتظر الي باتسويه
انا موقف صدور الموقع علشان كود المتواجدين الان
خالص تحياتى لك ولاتنسونا
هذا مثال عالطائر
الجدول
قم بوضع هذا الكود فى صفحه وسمها useronline.phpكود:CREATE TABLE useronline ( timestamp int(15) DEFAULT '0' NOT NULL, ip varchar(40) NOT NULL, file varchar(100) NOT NULL, PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file) );
قم بعمل include للملف فى اى مكان تود اظهار عدد المتواجدين الان فيهكود PHP:
<?php
//database and server details
$server = "xxx";
$db_user = "xxx";
$db_pass = "xxx";
$database = "xxx";
$db = mysql_connect($server, $db_user,$db_pass);
mysql_select_db($database,$db);
$timeoutseconds = 300; //5 minutes
$timestamp = time();
$timeout = $timestamp-$timeoutseconds;
$insert = mysql_query("INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')",$db);
if(!($insert)) {
print "Useronline Insert Failed > ";
}
$delete = mysql_query("DELETE FROM useronline WHERE timestamp<$timeout",$db);
if(!($delete)) {
print "Useronline Delete Failed > ";
}
$result = mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'",$db);
if(!($result)) {
print "Useronline Select Error > ";
}
$user = mysql_num_rows($result);
mysql_close();
if($user == 1) {
print("$user user online\n");
} else {
print("$user users online\n");
}
?>
ولى عوده
__________________
[... الحمدُ لله خالقِ الخلق، باسط الرزق، فالقِ الاصباح، ذي الجلال والاكرام، والفضل والانعام، الذي بَعُد فلا يُرى، وقرُبَ فشهِد النجوى.. تبارَك وتعالى، الحمدُ لله الذي ليس له منازع يعادله، ولا شبيه يشاكله، ولا ظهير يعاضده، قهر بعزَّته الاعزاء، وتواضع لعظمته العظماء، فبلغَ بقدرته ما يشاء..]
برمجه برامج تطبيقيه بواسطه Visual C++ , Visual basic , C
احتراف قواعد بيانات Sql , Oracle , Access
قبل مأركبه أخي بأجيب لك ملاحظات علشان تجيب لي الكود الصحيح
أخي زوار الموقع يكون في وقت واحد مابين 100 إلى 500 زائر في وقت واحد
يومياً يكون الزوار مابين 2000 إلى 3000 زائر
فأرجو اخذ هذا المعلومات بعين الاعتبار
حتى لاتحدث أخطاء
وخالص التحية
أنا آسف جدا يا أحمد لعدم الرد حتى الآن لأنني فعلا منشغل في رتب ..
لكن كود student فيه الفكرة التي كنت سأنفذها .. فقط تأكد من أن تحدد ip على انه unique حتى يعمل السكريبت بشكل أفضل .. وبهذا تحذف كلمة DISTINCT من جملة SELECT لتؤدي هذه الجملة بشكل أسرع .. بهذا لا يتم تنفيذ أمر UPDATE ويقتصر العمل على DELETE .. يعني نص الاوفرهيد تخلصنا منه ..
__________________
....
محمد حسام
انترنت بلس
طيب أخي انترنت انت عارف اني مالي خبر بالـ phpالمشاركة الأصلية كتبت بواسطة إنترنت بلس
فأذا ممكن تعدل لي الكود والسكربت كله وتجيبه جاهز
وتنتبه لهذا الحاجات :-
زوار الموقع يكون في وقت واحد مابين 100 إلى 500 زائر في وقت واحد
يومياً يكون الزوار مابين 2000 إلى 3000 زائر
بص يا سيدي .. أنا جربت سكريبت الأخ ستيودينت بعد ما عدلت حاجات فيه لزوم الاختبار وهو كويس جدا .. ورغم انه كويس جدا انما برضو:
load average ارتفع تقريبا 0.40 .. وبدأت تتكون overhead على الجدول .. لكنها كانت بتقل مع الوقت .. يعني تبدأ كبيرة وتقل وتظل عند رقم معقول .. ممكن تتابعها لما تشغل السكريبت .. لكن أعتقد ده أقل مقابل لسكريبت من النوع ده .. وأحسن حاجة فيه انه مش بيستخدم update لأن وقت التنفيذ كان ح يزيد وبالتالي اللود يعلا ..
ده الجدول مع حذف حقل الملف لأنه في الأصل كان بيسجل الموجودين في كل صفحة مش في الموقع كله:
وده الكود (هو نفسه بس مع تعديلات بسيطة في جملة select وinsert وفي الناتج)كود:CREATE TABLE `useronline` ( `timestamp` int(15) NOT NULL default '0', `ip` varchar(40) NOT NULL default '', PRIMARY KEY (`timestamp`), UNIQUE KEY `ip` (`ip`) ) TYPE=MyISAM;
شكرا ستودينت وكل الإخوة الذين شاركوا في عمل سكريبت الموجودين ..كود PHP:
<?php
//database and server details
$server = "xxx";
$db_user = "xxx";
$db_pass = "xxx";
$database = "xxx";
$db = mysql_connect($server, $db_user,$db_pass);
mysql_select_db($database,$db);
$timeoutseconds = 300; //5 minutes ولو خليتها 600 أفضل
$timestamp = time();
$timeout = $timestamp-$timeoutseconds;
$insert = mysql_query("INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR')",$db);
$delete = mysql_query("DELETE FROM useronline WHERE timestamp<$timeout",$db);
$result = mysql_query("SELECT ip FROM useronline",$db);
$user = mysql_num_rows($result);
mysql_close();
print("عدد الموجودين الأن: $user\n");
?>
__________________
....
محمد حسام
انترنت بلس
اخي Plus
انا ارى من كودك انه يمكن عند كل تحديث اضافة زائر ؟؟
وايضا انت تستمعل delete ؟؟
وهذا كما انت قلت سابقا يعمل ضغط ؟؟
أهلا بك أخي عاشق القمر
الكود مش كودي ده كود أخي ستيودينت الله يكرمه وأنا عدلت عليه بس .. وسبب ترشيحي له لأخي أحمد:
1- الكود فيه أقل عدد من جمل التعامل مع الداتابيز: 3 ..
2- الكود فيه جملة واحدة من الجمل التي ترفع الاوفرهيد: DELETE .. ومشكلتها أنها أساسية لحذف القدامى .. يعني يجب استخدامها ..
3- الكود ليس فيه UPDATE وهي من الجمل التي أكرهها (شخصيا) عندما تنفذ على جدول مزدحم بالعمليات .. حيث أعتبرها سبب بطء أي موقع .. وهذه النقطة هي ما شجعني لتعديل الكود .. وكده شلنا نصف الضغط اللي على السيرفر ..
4- استخدام INSERT مع كل زائر مع ملاحظة أنه UNIQUE هام جدا .. ووفر علينا جملة SELECT مفترضة في البداية ..
طبعا إذا فيه ملاحظات أهلا وسهلا .. هدفنا نصل إلى أفضل "عدد الزوار الموجودين الآن" .. مش الهدف ان فلان يكون احسن واحد واللا علان خبير .. كلنا بنتعلم ..
__________________
....
محمد حسام
انترنت بلس
كلنا بنتعلم
الاخ الكريم انترنت بلس
ممكن توضح اي فائدة هذا السطر :-
$timeoutseconds = 300; //5 minutes ولو خليتها 600 أفضل
انا بأنتظار ردك
ده الزمن اللي بنعتبره متوسط مدة زيارة الزائر .. متوسط الزيارة 5 أو 10 دقائق .. لو موقعك مقالات خليه ما يعادل 20 دقيقة ..
__________________
....
محمد حسام
انترنت بلس
طيب يعني ايش فائدة المتوسط هذاالمشاركة الأصلية كتبت بواسطة إنترنت بلس
يعني يحسب عدد الدخول أو كيف
للعلم الموقع الي بأركب عليه هذا الكود هو موقع اناشيد اسلامية ومحاضرات وتحميل كتب
بأنتظر ردك ياطيب
واتمنى ترفق لي بالكود الصح الي مايحتاج مني اي تعديل
يعني اضبطة لي الله يوفقك
وخالص التحية
أوكي جرب الكود زي ما هو وخليني اشوفه ..
متوسط مدة زيارة الزائر هي أساس عمل السكريبت .. لازم نفترض قد ايه كل زائر بيظل في الموقع ..
__________________
....
محمد حسام
انترنت بلس