PDA

View Full Version : سوال: تکرار کد هر مدت معین



faizollah
دوشنبه 17 تیر 1387, 21:03 عصر
سلام:

من یک تکه کد یا همون piece of code دارم که ایمیل رو چک میکنه. میخوام هر 5 دقیقه اجرا بشه و ایمیل چک کنه.

باید loop بنویسم؟

چیکار کنم؟

مرسی

maysamscript
دوشنبه 17 تیر 1387, 22:48 عصر
ajax راه حل مسئله هست

yaqubian
دوشنبه 17 تیر 1387, 23:04 عصر
دوست عزیز می تونی یه کد بزاری که هر 300 ثانیه صفحه رو رفرش کنه که باعث می شه کدت دوباره اجرا بشه.
مثل:
echo ("<META HTTP-EQUIV=Refresh CONTENT=\"300; URL=index.php\">");
اگه اسم صفحه index.php باشه و این کد رو تو صفحه بزاری، هر 5 دقیقه یکبار صفحه رو رفرش می کنه و کدهات دوباره اجرا می شن
موفق باشید

faizollah
چهارشنبه 19 تیر 1387, 16:47 عصر
کدهای من پشت صحنه کار میکنند. یعنی به یوزر نشون داده نمیشند.
در اصل process میکنند و نتیجه رو به یوزر میدن.

حالا رفرش در مورد پشت صحنه درسته یا نه؟

در مورد حل این مشکل با ajax هم یک کمی توضیح بدید ممنون میشم.

eAmin
چهارشنبه 19 تیر 1387, 18:28 عصر
سلام.

در اصل خود ای جکس توانایی این کار رو نداره، یعنی نمی تونی ازش به عنوان یک timer استفاده کنی برای اینکار باید از خود جاوااسکریپت استفاده کرد...

vahid4134
چهارشنبه 19 تیر 1387, 23:07 عصر
اگر از لینوکس یا سرور لینوکس استفاده می کنید از cronjob استفاده کنید. استفاده از ajax و رفرش کردن صفحه یعنی یک مرورگر باز بودن که واقعا بی معنی هست

yaqubian
چهارشنبه 19 تیر 1387, 23:57 عصر
دوست عزیز می شه قطعه کدت رو بزاری ببینیم می خوای چی کار کنی؟
تا جایی که من فهمیدم واسه کارت از AJAX نمی تونی استفاده کنی چون اگه به آموزش اون تو تاپیک مربوطه هم مراجعه کنی می بینی که این تکنولوژی زمانی کارسازه که روی یه چیزی کلیک بشه!
در مورد رفرش هم باید بگم من فکر کردم منظورت اینه که پشت سیستم نشستی و مرورگرت بازه و نمی خوای هر بار رفرش رو بزنی.
فکر می کنم بهتره از پیشنهاد آقا وحید بهره بگیری
موفق باشید

sweb
پنج شنبه 20 تیر 1387, 00:35 صبح
توجه کن :


اگر از لینوکس یا سرور لینوکس استفاده می کنید از cronjob استفاده کنید. استفاده از ajax و رفرش کردن صفحه یعنی یک مرورگر باز بودن که واقعا بی معنی هست


event های php بر مبنای request به سرور اجرا میشه اگر کاربری به سرور درخواستی ارسال نکنه کد شما اجرا نخواهد شد. چاره کار استفاده از cron هستش. که در cpanel سرورها هم موجود هستش. یک فایل جدا بساز و cron رو روی اون به مدت زمان دلخواهت تنظیم کن.

amirhosein
پنج شنبه 20 تیر 1387, 10:06 صبح
اینو بخونی به کارت میاد:
http://barnamenevis.org/forum/showpost.php?p=496185&postcount=17

faizollah
پنج شنبه 20 تیر 1387, 14:20 عصر
مرسی دوستان. ولی من از localhost روی ویندوز استفاده میکنم.
به قول جناب yaqubian اگر کد رو بزارم شاید واضحتر بشه.




<?php
include('mysqli_connect.php');//connect to database
$mbox = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", "User_id", "password")
or die("can't connect: " . imap_last_error());
//retrieve number of emails
$mc = imap_check($mbox);
$n = $mc->Nmsgs;
echo $n . '<br>';
//grab header for each email.
for($i=1;$i<=$n;$i++) {
$header = imap_header($mbox, $i);
//if email is recent and unread.
if ($header->Recent==N) {
$from = $header->from;
//retrieving sender's address.
foreach ($from as $id => $object) {
$fromname = $object->personal;
$fromaddress = $object->mailbox . "@" . $object->host;
echo $fromaddress . '<br>';
}

//making a query to fetch demail from database.
$q = "select demail from users where user_id = 7";
$r = @mysqli_query($dbc,$q);
if(mysqli_num_rows($r)==1) {
$row = mysqli_fetch_array($r,MYSQLI_NUM);
}
else {
echo '<p class="error">Error<br></p>';
}
//if sender's email = user desired email...
if($row == $fromaddress) {
$ok = 1;
echo 'ok = '.$ok;
}
else {
$ok = 0;
}
}
}
?>


این کد یوزر و پسورد ایمیل رو میگیره و به یوزر میگه که از فلانی (که یوزر تعیین میکنه کی) برات ایمیل اومده. حالا این عملیات چک کردن ایمیل به طور مرتب مثلا هر 5 دقیقه باید تکرار بشه که ایمیل رو چک کنه برای ایمیل جدید.
و این کد رو یوزر نمیبینه یعنی پشت صحنه انجام میشه. فقط یک بار یوزر روی لینک کلیک میکنه که این کد فعال بشه. از اون به بعد مثلا هر 5 دقیقه این کد اجرا بشه.

امیدوارم منظورم رو واضح گفته باشم.

مرسی :خجالت:

vahid4134
پنج شنبه 20 تیر 1387, 15:14 عصر
http://drupal.org/node/31506

vahid4134
پنج شنبه 20 تیر 1387, 15:22 عصر
http://cronw.sourceforge.net/

امید امرایی
پنج شنبه 20 تیر 1387, 20:54 عصر
خوب در این مورد به Corn نیازی نیست
گذشته از اون اگر سیستم سایت شما از پایه Ajax نیست استفاده از Ajax هم مورد نیاز نیست چون خواهی نخواهی کاربر شما خودش بارها صفحه رو رفرش می کنه و برای حل معضل وجود کدهای تکراری می تونید از هدر های ایستا استفاده کنید

اما اگه سایت شما مبتنی بر Ajax باشه استفاده از Ajax منطقی و بهترین راه حله




function AjaxCheck()
{
// Ajax Code for checking
}

window.setInterval('AjaxCheck()',50000);

yaqubian
پنج شنبه 20 تیر 1387, 22:28 عصر
دوست عزیز
با توجه به کدتون نیازی به cron ندارید. من هم با نظر kassit عزیز موافقم.
موفق باشید

faizollah
یک شنبه 23 تیر 1387, 12:49 عصر
منظور من اینه که چطور میشه که در سمت client صفحه ی browser بسته بشه ولی در سمت server کد مربوطه هنوز فعال باشه و پشت سر هم اجرا بشه و process کنه.

vahid4134
یک شنبه 23 تیر 1387, 15:05 عصر
باید از cron استفاده کنید

faizollah
یک شنبه 23 تیر 1387, 16:08 عصر
یعنی کاری که میخوام cron انجام میده؟

حتی اگر یوزر سایت رو ببنده. کد روی سرور به طور مداوم اجرا میشه؟

Bahram0110
یک شنبه 23 تیر 1387, 18:30 عصر
حتی اگر یوزر سایت رو ببنده. کد روی سرور به طور مداوم اجرا میشه؟
بله
Cron اصلا کاری به یوزر شما نداره
خودش اجرا می شه
http://barnamenevis.org/forum/showthread.php?t=100043