همزمان سازي دو ديتابيس

I.NoBody

Active Member
سلام دوستان.

من مي خوام عمل همزمان سازي دو پايگاه داده رو انجام بدم كه يكي روي كامپيوتر لوكال نصب هست و به عنوان ديتابيس اول هست. ديگري هم روي يك سرور اينترنتي.
همونطور كه در CPanel مي بينيد، امكان remote access به ديتابيس، فقط به آي پي شناخته شده داده ميشه. پس نميتونم از كامپيوتر local، به ديتابيس سرور اينترنتي متصل بشم چون آي پي ثابتي ندارم.
فكر كنم بهتر باشه كه اسكريپت همزمان سازي رو روي سرور اجرا كنم و از اونجا به ديتابيس لوكال متصل بشم. اما نمي دونم چه آدرسي به عنوان آدرس سرور ديتابيس لوكال بايد بدم؟

آيا كسي تجربه اين كار رو داره؟ يا راهي به فكرش مي رسه؟

Tnx All
 

Masoud1365

مدیر انجمن
از روی سرور شما نمیتونید به لوکال کانکت بشید چون چنین اجازه ای رو به شما نمیده .
 

k2-4u

Well-Known Member
خب . شما رنج IP مربوط به ISP که از اون اینترنت میگیرین رو پیدا کنید . بعد برید در داخل تنظیمات Cpanel
و زنج IP رو به صورت زیر اضافه کنید
PHP:
217.216.%.%
یا
217.%

سپس در لوکال به این صورت متصل بشید
PHP:
mysql_connect('58.12.133.222:3306','user','pass');

بهترین کار اینه که . اگر از ADSL استفاده می کنید
یک IP استاتیک خریداری کنید
( در استان ما 10 هزار تومان در ماه هزینه داره )
 

I.NoBody

Active Member
k2-4u عزيز، من هم همچين راهي به ذهنم رسيد. ولي مي دوني كه مشكل امنيتي ميتونه پيش بياره.
فكر كنم راهي ندارم جز اينكه مراحل كار رو طولاني تر كنم.
مثلاً اين امكان رو به مدير سايت بدم كه از ديتابيس لوكال اكسپورت بگيره و توي اينترنت ايمپورت كنه و بعدش دستابيس اصلي رو با ديتابيس ايمپورت شده sync كنه.
با توجه به حجم بالاي ديتابيس، كار اذيت كننده اي هست. ولي فكر كنم راه ديگه اي ندارم.
 

k2-4u

Well-Known Member
اگر از IP ثابت استفاده کنید هیچ مشکل امنیتی برای شما به وجود نمیاد
در حال حاظر . من این کارو روی یک سیستم بین . یک انبار و فروشگاه استفاده می کنم
----
اگر از IP ثابت استفاده نکنید . سایر کاربر های اون ISP می تونن به سرور دسترسی داشته باشند
ولی به شرط اینکه نام کاربری و رمز عبور سرور شما رو داشته باشند!
------
این عمل رو تست کنید
آدرس زیر رو با IE باز کنید (یک سایتی که Cpanel باشد )
http://site.com:3306
 

I.NoBody

Active Member
حق با شماست. ولي مشكل من اينه كه نميتونم كارفرما رو راضي كنم كه بايد يه هزينه اي بابت IP ثابت بده.
ضمناً معمولاً روي سرورهايي كه mysql روشون نصب مي كنن، پورت 3306 رو مي بندن.
سروري كه سايت هاي من هم روش هست، همينطوره.
به هر حال فكر كنم راهي جز پيچوندن لقمه ندارم.
 

k2-4u

Well-Known Member
نه نه لقمه پیچوندن کار خوبی نیست !
بهتره یک اسکریپ php درست کنید که با متد GET یا POST یک نام کاربری و رمز عبور رو چک کنه
و بعد ! . کوئری رو دریافت کنه و به mysql ارسال کنه
مثل یک رابط .
خیلی راحته !
 

I.NoBody

Active Member
جداول مربوطه حد اقل داراي 100 هزار ركورد هستند. حالا من بخوام اين ركوردها رو ارسال و دريافت كنم و بعدش هم sync انجام بدم!! خيلي كار ناجوريه :-?
 

k2-4u

Well-Known Member
بنظر ناجور میاد ! .
اطلاعات از طریق مدت POST یا ارسال میشن یا ارسال نمیشن
و از طرف دیگر هم کوئری ها یا در بانک قرار میگیرند یا قرار نمیگیرند
----------------------------
اسکریپ شما برای ارسال کوئری باید به شکل زیر باشد

PHP:
<?php
error_reporting(0);

//Connect to sql  and ...

if(mysql_query($_POST['query']))
	echo 1;
else
	echo 0;


?>

فقط دقت کنید باید یک نام کاربری و رمز عبور برای خودتون انتخاب کنید
و بهتره از SSL استفاده کنید



برای دریافت هم

PHP:
<?php
error_reporting(0);

//Connect to sql  and ...


$qy=mysql_query($_POST['send']);
while($row=mysql_fetch_assoc($qy)){
	$all[]=$row;
}


echo serialize($all[]);

?>

در سمت خودتون کافیه اطلاعات روبه وسیله تابع unserialize به آرایه تبدیل کنید به یک آرایه

PHP:
<?php

$array=unserialize($code);

?>
 

ziXet

مدیر انجمن PHP/MYSQL
جداول مربوطه حد اقل داراي 100 هزار ركورد هستند. حالا من بخوام اين ركوردها رو ارسال و دريافت كنم و بعدش هم sync انجام بدم!! خيلي كار ناجوريه :-?
خب هر 100 هزارتا رکورد رو نباید که یمجا نشون بدی!
باید مثلا 20 تا 20 تا نشون بدی که با کوئری های مختلف میشه این کارو انجام داد.
 

I.NoBody

Active Member
خب هر 100 هزارتا رکورد رو نباید که یمجا نشون بدی!
باید مثلا 20 تا 20 تا نشون بدی که با کوئری های مختلف میشه این کارو انجام داد.

خوب اگر بخوام اينجوري كار كنم، همون روش سه مرحله اي سريعتره.
مرحله 1 : گرفتن خروجي از ديتابيس لوكال
مرحله 2 : درج خروجي در ديتابيس آنلاين با استفاده از فرم
مرحله 3 : همزمان سازي دو جدول ديتابيس آنلاين
 

tarhebartar

Member
کامپیوتر خونه شما شاید برات php رو بالا بیاره و بتونی توی دیتابیس دیتا بزنی و کدها رو ترجمه کنی ولی به عنوان سرور شناخته نمیشه !!!

در مورد راه اندازی سرور هاست به صورتی که با ارتباط اینترنتی بشه بالا آوردش تحقیق کنید !

موفق باشید
 

tarhebartar

Member
ولی حالا گفتم این لینک رو هم بدم , بد نیستش , نمی دونم شاید به دردت بخوره گفتم کمک کنه :

کد:
http://forum.persiantools.com/t100752.html

موفق باشید
 

جدیدترین ارسال ها

بالا