PDA

View Full Version : سوال: نحوه اطلاع رسانی به مدیر سایت هنگام مشاهده یک صفحه



moham14
جمعه 29 دی 1391, 10:51 صبح
چطور می شود وقتی صفحه ای از سایت دیده می شود با استفاده از PHP بتوانیم
یک notification از هر نوع که باشد به کامپیوتر شخصی مان ارسال کنیم.
البته میتوان از روش فرستادن ایمیل استفاده کرد و مطالب مورد نیاز را در عنوان یا پیغام ایمیل جا داد ، ولی در این حالت باید نرم افزار دسکتاپی داشته باشیم که پیوسته ایمیلمان را چک کند مگر اینکه باز به روشی بتوانیم ایمیل را در دسکتاپ دریافت کنیم. البته هدف من این است که با نرم افزار دسکتاپی که خودم نوشته ام این notofication را در همان لحظه یا با حد اقل تاخیر دریافت کنم یا از وجودش آگاه شوم.

روشی که بعد از جستجو پیدا کردم و متاسفانه هنوز به نتیجه نرسیده استفاده از Socket connection است
که یک نرم افزار در کامپیوتر شخصی پورتی را Listen کند و PHP پیغامی را به این پورت بفرستد.
حقیر دو نرم افزار در دلفی نوشته ام که یکی در نقش سرور ، پورتی را Listen میکند و دیگری در یک کامپیوتر دیگر که فقط از طریق اینترنت با کامپیوتر اولی می تواند ارتباط داشته باشد ، از طریق
Socket connection پیغامی را میفرستد و اولی بدون مشکل دریافت میکند ولی وقتی با PHP پیغامی را میفرستم خطای زیر را میدهد

Warning: fsockopen() [function.fsockopen]: unable to connect to 90.120.28.128:2277 (Connection timed out) in /home3/mydomain/public_html/1.php on line 16
Connection timed out (110)


روش دیگری که به ذهنم رسید این بود که با PHP به MSSQL Server به روش remote وصل شوم که اینهم اجرا نشد چون دستور mssql_connect در وب سرور من فعال نیست

آخرین روشی که میخواهم انجام دهم و هنوز فرصت نشده این است که mySQL را در کامپیوترم نصب کنم و با PHP به آن وصل بشوم که نمی دانم عملی است یا خیر

Unique
جمعه 29 دی 1391, 12:31 عصر
عجب پشتکاری !
ببینید من نمیدونم سناریو شما چیه و دقیقا چند تا پیام ممکنه ارسال بشه ! اگه تعداد پیام ها محدوده مثلا شما cron jobs دارین و روزی ماکسیسموم تا 10 یا 20 تا پیام ارسال میشه ! بهتره از sms استفاده کنید اگه میخواین همون موقع متوجه بشین ! اما اگه تعداد پیام ها زیاده موضوع فرق میکنه ، برای استفاده از socket یا mssql یا mysql حتما باید Ip را static بگیرین و مطمئن بشین port های مورد نظر روی سیستم شما بازه و مثلا با proxy یا هر نرم افزار دیگه ای بسته نیست ، با proxy میشه یک port را روی lan باز کرد و روی wan بست ! پس کاملا مطئن بشین ! مثلا برای mysql باید 3306 باز باشه ! تازه کاربری که باهاش connect میکنین و خود تنطشیمات اجازه remote connect بده !

دوست عزیز راه اندازی این جور سیستم ها نیاز به تجربه و خطای زیاد داره و شاید شانسی روی یک سیستم جواب بگیرین اما ممکنه اگه سیستم عوض بشه یکی از این موضوعات رعایت نشده باشه و به مشکل بخورین.

در مورد این خطا :

Warning: fsockopen() [function.fsockopen]: unable to connect to 90.120.28.128:2277 (Connection timed out) in /home3/mydomain/public_html/1.php on line 16
Connection timed out (110

php میخواد ارتباط را برقرار کنه اما timeout میشه ! حالا یا برنامه شما accept نمیکنه یا اصلا port بسته هستش یا این Ip را تشخیص نمیده.

moham14
جمعه 29 دی 1391, 14:12 عصر
ممنون از پاسختان

کاری من میخام انجام بدم اینه که در دیتابیسی که روی کامپیوتر شخصی ام با xp دارم لیست ویزیتهای صفحات سایتم را بدون تاخیر داشته باشم.
حالا دیتابیس mySQL باشد یا MS_SQLServer فرقی نمی کند هر کدام که امکان پذیر باشد قابل قبول است.

ضمنا همانطور که عرض کردم قبلا با دو برنامه دسکتاپ مجزا ارتباط موفق Socket connection و ارسال متن دلخواه داشته ام برای اینکار در قسمت NAT مودمم PORT FORWARDING کرده ام تا ip معتبر در اینترنت به ip سیستم من که 192.168.1.2 است توسط مودم ترجمه شود ، پورت مورد نظر هم در فایروال باز شده است ، و هیچ خطائی هم موجود نیست. مثلا از محل کارم پیغامی میفرستم و از همان جا که به کامپیوتر منزل وصل هستم دریافت پیغام را مشاهده می کنم.
حالا میخام به جای کامپیوتر محل کارم ، وب سرور ، به کامپیوتر منزل پیغام بفرستد ، البته اصرار روی Socket connection ندارم اصلا روش مهم نیست با هر روشی که ، هنگام ویزیت یک صفحه روی وب سرور ، پیغامی در xp داشته باشم ، مسئله حل میشه

ضمنا ، اصلا امکان پذیره که mySQL را در xp نصب کنم و به آن ، به صورت Remote ، کانکت بشم یا خیر؟

ravand
جمعه 29 دی 1391, 15:08 عصر
من چند وقت پیش دنبال این بودم که یه کاری توی مایه های کاری که شما میخوای انجام بدی بدم.
میخواستم با جاوا ( j2se) برنامه ای بنویسم و بدم به بازدید کنندگان سایتم که به محض اینکه من پیامی روی سایتم ارسال کردم اون ها هم دریافت کنند.
دنبال سوکت هم رفتم ولی به نتیجه ای نرسیدم. میشه منم راهنمایی کنید؟ اصلا موندم چیکار باید بکنم.
متشکرم.

MostafaEs3
جمعه 29 دی 1391, 15:52 عصر
ممنون از پاسختان

کاری من میخام انجام بدم اینه که در دیتابیسی که روی کامپیوتر شخصی ام با xp دارم لیست ویزیتهای صفحات سایتم را بدون تاخیر داشته باشم.
حالا دیتابیس mySQL باشد یا MS_SQLServer فرقی نمی کند هر کدام که امکان پذیر باشد قابل قبول است.

ضمنا همانطور که عرض کردم قبلا با دو برنامه دسکتاپ مجزا ارتباط موفق Socket connection و ارسال متن دلخواه داشته ام برای اینکار در قسمت NAT مودمم PORT FORWARDING کرده ام تا ip معتبر در اینترنت به ip سیستم من که 192.168.1.2 است توسط مودم ترجمه شود ، پورت مورد نظر هم در فایروال باز شده است ، و هیچ خطائی هم موجود نیست. مثلا از محل کارم پیغامی میفرستم و از همان جا که به کامپیوتر منزل وصل هستم دریافت پیغام را مشاهده می کنم.
حالا میخام به جای کامپیوتر محل کارم ، وب سرور ، به کامپیوتر منزل پیغام بفرستد ، البته اصرار روی Socket connection ندارم اصلا روش مهم نیست با هر روشی که ، هنگام ویزیت یک صفحه روی وب سرور ، پیغامی در xp داشته باشم ، مسئله حل میشه

ضمنا ، اصلا امکان پذیره که mySQL را در xp نصب کنم و به آن ، به صورت Remote ، کانکت بشم یا خیر؟

ببینید برای این کار باید اتصال دائم به اینترنت و سرور برقرار باشه - شما میتونید یک وب سرور خانگی با نرم افزار های شبیه سازی هاست مثل Xampp یا Wamp درست کنید و اگه آی پی استاتیک دارید اون آی پی رو به وب سرور خانگی خودتون وصل کنید - خب برای اینکار نیاز هست که httpd.conf رو توی آپاچی ویرایش کنید و روی آی پی ست شده قرارش بدید ! اینطوری از تمام دنیا میشه سیستم شما رو به عنوان یک سرور فراخوانی کرد !

بعد از اون شما میتونید به دیتابیس Mysql که روی سرور خانگی خودتون قرار داره از طریق سرور سایتتون متصل بشید و عمل Insert رو براحتی انجام بدید !

البته اینکار مصرف ترافیک اینترنت رو هم داره و نمیدونم چقدر مصرف بشه

MostafaEs3
جمعه 29 دی 1391, 15:54 عصر
من چند وقت پیش دنبال این بودم که یه کاری توی مایه های کاری که شما میخوای انجام بدی بدم.
میخواستم با جاوا ( j2se) برنامه ای بنویسم و بدم به بازدید کنندگان سایتم که به محض اینکه من پیامی روی سایتم ارسال کردم اون ها هم دریافت کنند.
دنبال سوکت هم رفتم ولی به نتیجه ای نرسیدم. میشه منم راهنمایی کنید؟ اصلا موندم چیکار باید بکنم.
متشکرم.

سید جون یه ارسال کننده درخواست بصورت ajax بذار روی وبسایت بعد یک تابع پی اچ پی رو فراخوانی کن ! مثلا بگو اگه چیزی اونجا بود سریع توی صفحه نمایش بده ! ولی معمولا این خیلی خوب نیس چون بازدید کنندگان بعدی که میان نمیتونن ببینن اون پیام چی بوده ! :لبخند:

moham14
جمعه 29 دی 1391, 18:25 عصر
ببینید برای این کار باید اتصال دائم به اینترنت و سرور برقرار باشه - شما میتونید یک وب سرور خانگی با نرم افزار های شبیه سازی هاست مثل Xampp یا Wamp درست کنید و اگه آی پی استاتیک دارید اون آی پی رو به وب سرور خانگی خودتون وصل کنید - خب برای اینکار نیاز هست که httpd.conf رو توی آپاچی ویرایش کنید و روی آی پی ست شده قرارش بدید !

آیا شبیه ساز Xampp و Wamp روی xp نصب می شود یعنی ما همزمان هم xp داریم و هم سیستممان وب سرور است؟ اگه اینطوری باشه که خیلی عالیه

فقط یک مسئله میمونه و اون اینکه من محتویات Insert شده از طرف PHP را میتونم در محیط xp بدست بیارم
چون نرم افزاری که من برای کنترل ویزیت صفحات خواهم نوشت در xp است و این اطلاعات در xp بدرد من می خورد.

MostafaEs3
جمعه 29 دی 1391, 18:41 عصر
آیا شبیه ساز Xampp و Wamp روی xp نصب می شود یعنی ما همزمان هم xp داریم و هم سیستممان وب سرور است؟ اگه اینطوری باشه که خیلی عالیه

آره چرا که نه ! فقط دقت کنید آی پی شما حتما باید Static باشه و سیستمتون همیشه روشن ! :چشمک:

Unique
شنبه 30 دی 1391, 02:08 صبح
ببینید برای دیدن visit ها فکر نکنم این کار جالب باشه ، شما میتونید از google analytic استفاده کنید و هر وقت حواستینم ویزیت ها را ببینین !

اگه شما Ip ثابت دارین و port ها هم باز هستند و مثلا از یک سیستم remote که به اینترنت وصل میشه میتونید به Port و ip سیستم خودتون وصل بشین اما با php از روی هاست نتونستید مشکل از هاست شماست و احتمالا اونها دارند شما را block میکنند این موضوع هم عجیب نیست چون بعضی از hosting ها کشور ایران را block میکنند و نمیشه به Ip های ایران اتصال داشت بهتره این موضوع را با اراده دهنده هاستتون چک کنین !


ضمنا ، اصلا امکان پذیره که mySQL را در xp نصب کنم و به آن ، به صورت Remote ، کانکت بشم یا خیر؟
mysql هم به راحتی روی xp نصب میشه و مشکلی نداره ! همینطور apache ! و امکان ارتباط remote هم وجود داره !