PDA

View Full Version : سوال: تایم دادن به دستورات PHP



mahdi.iqu
دوشنبه 02 اردیبهشت 1392, 02:28 صبح
سلام
یه سوالی داشتم
آیا تو php امکان داره برای کار ها زمان خاصی مشخص کرد؟
به صورت مثال من تو سایتم گوگل پلاس قرار دادم
بیام با php مشخص کنم مثلا اگر تا 10 ثانبه گوگل پلاس لود نشود دیگه بیخیالش بشه و بره برای اجرای ما بقی دستورات ایمکار شدنی هست؟

یا مصلا بگم بعد از 10 ثانیه دستور زیر رو اجرا کن؟
میشه چنین چیزی؟

ravand
دوشنبه 02 اردیبهشت 1392, 08:20 صبح
اگه صفحه باز باشه میشه از دستور زیر استفاده کرد:

<?php
echo date('h:i:s') . "\n";
sleep(10);
echo date('h:i:s') . "\n";
?>
وگرنه باید از کران جابز استفاده کنی.

MMSHFE
دوشنبه 02 اردیبهشت 1392, 08:33 صبح
نه دوست عزیز، منظور ایشون اینه که اسکریپت 10 ثانیه منتظر جواب بمونه و اگه جوابی نیومد، بقیه اسکریپت Load بشه. sleep کلاً اسکریپت رو به مدت زمانی که مشخص میکنید، میخوابونه. برای اینکار باید از cURL استفاده کنید.

mahdi.iqu
سه شنبه 03 اردیبهشت 1392, 02:09 صبح
تشکر از راهنماییتون
cURL چی هست؟
ممکن یه مثال بزنید؟

MMSHFE
سه شنبه 03 اردیبهشت 1392, 08:26 صبح
توی همین تالار درموردش جستجو کنید. هم توضیحش زیاد هست و هم نمونه کاربردهاش. بطور خلاصه، یک افزونه هست که تقریباً به شما تمام امکانات یک Browser رو میده (مثل خوندن یا فرستادن کوکیها، ارسال مقادیر به روش Post یا Get به صفحات موردنظر، استخراج هدرهای صفحه و بدنه اون بطور جداگانه، دنبال کردن لینکهایی که شما رو به یک صفحه دیگه Redirect میکنن و...)

mahdi.iqu
سه شنبه 03 اردیبهشت 1392, 17:38 عصر
مهندس جان ممنون از توضیحاتتون
یه سوال آیا با این دستورات میشه کاری کرد که بگیم اگر گوگل پلاس در مدت 10 ثانیه اجرا نشد دیگه از اجرا کردنش منصرف بشه؟
میشه دستورش رو بزارید؟

MMSHFE
سه شنبه 03 اردیبهشت 1392, 22:39 عصر
بله میتونید. مثلاً با cURL و تنظیم Timeout روی 10 ثانیه، اطلاعاتش رو بگیرین و نمایش بدین. اجازه بدین کد آماده ندم و توی گوگل دنبال cURL Timout جستجو کنید. اگه به نتیجه نرسیدین، بعد کد آماده بگذارم.

mahdi.iqu
جمعه 06 اردیبهشت 1392, 21:01 عصر
گشتم متاسفانه چیزی متوجه نشدم!

MMSHFE
شنبه 07 اردیبهشت 1392, 00:47 صبح
این یک نمونه:


<?php
public function GooglePlus($url) {
$gpfile = 'googleplus.html';
$match = array();
$gp = '';
$ch = curl_init('http://plus.google.com');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$gp = curl_exec($ch);
curl_close($ch);
if($gp != '') {
file_put_contents($gpfile, $gp);
}
}
?>

این تابع رو که اجرا کنید، محتوای صفحه http://plus.google.com رو توی فایل googleplus.html توی سایت شما ذخیره میکنه. تا 10 ثانیه صبر میکنه و اگه جواب نیومد، همون کد قبلی رو توی فایل باقی میگذاره. حالا کافیه بجای کد گوگل پلاس، کد موجود در فایل googleplus.html خودتون رو اجرا کنید.

abtahi16
چهارشنبه 14 اسفند 1392, 23:22 عصر
با سلام و عرض ادب!
دوستان، بنده می خواستم بدونم آیا میتونم به یک بلاک timeout برای زمان اجراش بدم.
مثال:
<?php
function ftest(){
/* my codes */
}
?>

میخوام برای اجرای تابع فرضی ftest یک timeout بزارم تا مثلا اگر بیشتر از 10 ثانیه طول کشید، از تابع بیاد بیرون.

maysam.m
پنج شنبه 15 اسفند 1392, 15:21 عصر
همچین کاری برای گوگل پلاس امکان نداره
بهتره کد رو انتهای صفحه قرار بدید که وقتی لود نشد سایت لود شده باشه و منظر اون نمونه