PDA

View Full Version : PHP/mysql/cron



kazemimorteza
جمعه 27 تیر 1393, 21:16 عصر
سلام وققتون بخیر.
یک جدولی از اعضا دارم و وقتی که یوزر جدید میاد ثبت نام میکنه به بقیه اعضا می خوام ایمیل و اس ام اس ارسال بشه چه جوری این موضوع را پیاده سازی کنم که برای یوزر جدید که ثبت نام میکنه زمان ثبت نامش طول نکشه؟یعنی ارسال ایمیل و پیامک به صورت background اجرا بشود؟

مهرداد سیف زاده
جمعه 27 تیر 1393, 21:49 عصر
خب شما اول اطلاعات کاربر جدید رو ثبت کن و یه جدول send_message هم درست کن. کاربر جدید که ساخته میشه اطلاعاتش میره توی این جدول. البته باید کاربر جدی رو یه جوری مشخص کنید مثلا توی همین جدول یه فیلد is_new بزاری تا بعد از ارسال اطلاعات این کاربر به کاربران دیگه این فیلد رو 0 کنید. و cron شما بسته به شلوغ بودن سایت متغیره مثلا اگر روی ۱۰ تا کاربر ثبت نام میکنن شما cron رو روی ۱ ساعت بزار یا اگه براتون مهم نیست هر نیم ساعت بزارید
در این ارسال پیام به کاربران دیگه هم هر زمانی که cron اجرا میشه ابتدا اطلاعات جدول send_message رو میخونه کاربران جدید که با is_new مشخص شده که هر کدوم 1 داشته باشن باید اطلاعات برداشت بشه و به کاربران دیگه ارسال بشه و بعد پایان ارسال پیام این فیلد برای اون کاربر 0 میشه.

kazemimorteza
جمعه 27 تیر 1393, 22:01 عصر
ممنون که پاسخ دادید.من ارتباط PHP با cron را نمی دونم ؟این که کاربر جدید اطلاعاتش ثبت بشه و کاربرهای دیگر تشخیص داده بشن مشکلی ندارم مسله اینجاست که چه جوری به کاربران قبلی ایمیل و پیام ارسال کنم یعنی په جوری این مسله را بصورت backgroundWorker اجرا کنم که کاربر تازه ثبت نام شده درگیر با این موضوع نشه و فقط به اندازه ثبت نام براش زمان ببره؟

مهرداد سیف زاده
جمعه 27 تیر 1393, 22:02 عصر
شما سایت روی host اجرا میکنید؟ آیا دسترسی به cpanel دارید؟

kazemimorteza
جمعه 27 تیر 1393, 22:04 عصر
بله دارم .

مهرداد سیف زاده
جمعه 27 تیر 1393, 22:12 عصر
خب شما جدول رو بسازید طبق دستوراتی که گفتم و بعد یه فایل php‌هم بنویسید بزارید یجای سایت
کار این فایل اینه که اطلاعات رو از جدول send_message میگیره و بازم بنا بر توضیحاتی که بالا دادم اطلاعات رو برداشت و ایمیل ارسال میکنه. ولی باید بر اساس زمانی که شما دوست دارید اجرا بشه
درون cpanel در بخش advanced شما گزینه cron رو دارید یه cron جدید ایجاد کنید و دستور cron رو بر اساس زیر بنویسید
اول زمانش که بر اساس minute رو در جلوش بصورت 30/* وارد کنید و در انتهای دستور cron بصورت زیر باید باشه


lynx -dump http://mysite.com/send_message.php

kazemimorteza
جمعه 27 تیر 1393, 22:31 عصر
ممنونم که پاسخ میدید.نمیشه کرون را طوری تنظیم کرد که به محض این که کاربر جدیدی عضو میشه به بقیه email و sms ارسال بشه؟یعنی زمانبندی اش به ذخیر عضو جدید وابسته بشه نه زمانبندی پیش فرض ؟

مهرداد سیف زاده
جمعه 27 تیر 1393, 22:35 عصر
چرا میشه
شما هر کاربر جدید یک بار یک request از نوع ajax میتونه بزنه. یعنی الان کاربر ثبت نام کرد و ثبت نام تکمیل شد و شما حالا با یک پیامی بهش میگید ثبت نام شما تکمیل شد. در همین لحظه برای فایل send_message.php یک ajax ارسال میکنید تا اون هم اطلاعات کاربر رو بگیره و برای بقیه ارسال کنه. البته یه جوری باید کنترلش کنید که این ajax فقط یک بار و اون بعد از تایید ثبت نام ارسال بشه