• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
معرفی دو تابع sleep() و usleep()
#1
سلام،

این دو تا تابع رو هیچوقت فکرشم نمیکردم وجود داشته باشن. بابا پی اچ پی عجب چیز شاخ و عظیمیه!

http://php.net/manual/en/function.usleep.php
و http://www.php.net/manual/en/function.sleep.php

هر دو تابعی هستند که اجرا رو به تاخیر میندازن. فقط اولین تابعی یعنی usleep() بر اساس میکرو ثانیه عمل میکنه و دومی بر اساس ثانیه.
در تابع اول اون یو (u) نیست. نمادی از میکرو هست که تقریبا شبیه یو می مونه Wink


خوش باشید منم برم عصرونه بخورم

حالا شاید بپرسید کجا کاربرد داره. کاربردش مثلا اینجاست. یه کوئری سنگین (خفن) داری که میخوای INSERT یا DELETE کنی. خب برای هر بار شما یه وقفه میندازی بینش که سنگینیش احساس نشه. اینم مثالش
کد پی‌اچ‌پی:
while (1) {  
        
mysql_query("DELETE FROM logs WHERE log_date <= '2009-10-01' LIMIT 10000");  
        if (
mysql_affected_rows() == 0) {  
            
// done deleting  
            
break;  
        }  
        
// you can even pause a bit  
        
usleep(50000);  
    } 
http://net.tutsplus.com/tutorials/other/...practices/
غایب
  پاسخ
#2
(۱۳۹۱ تير ۰۷, ۰۷:۲۰ ب.ظ)cyletech نوشته: سلام،

این دو تا تابع رو هیچوقت فکرشم نمیکردم وجود داشته باشن. بابا پی اچ پی عجب چیز شاخ و عظیمیه!

http://php.net/manual/en/function.usleep.php
و http://www.php.net/manual/en/function.sleep.php

هر دو تابعی هستند که اجرا رو به تاخیر میندازن. فقط اولین تابعی یعنی usleep() بر اساس میکرو ثانیه عمل میکنه و دومی بر اساس ثانیه.
در تابع اول اون یو (u) نیست. نمادی از میکرو هست که تقریبا شبیه یو می مونه Wink


خوش باشید منم برم عصرونه بخورم

حالا شاید بپرسید کجا کاربرد داره. کاربردش مثلا اینجاست. یه کوئری سنگین (خفن) داری که میخوای INSERT یا DELETE کنی. خب برای هر بار شما یه وقفه میندازی بینش که سنگینیش احساس نشه. اینم مثالش
کد پی‌اچ‌پی:
while (1) {  
        
mysql_query("DELETE FROM logs WHERE log_date <= '2009-10-01' LIMIT 10000");  
        if (
mysql_affected_rows() == 0) {  
            
// done deleting  
            
break;  
        }  
        
// you can even pause a bit  
        
usleep(50000);  
    } 
http://net.tutsplus.com/tutorials/other/...practices/

تازه دیدیش ؟ :دی Big GrinBig GrinBig GrinBig GrinBig GrinBig GrinBig GrinBig Grin
  پاسخ
تشکر شده توسط :
#3
نقل قول:تازه دیدیش ؟ :دی
ای آدمای بد. همتون خیلی چیزارو میدونید ها. اگه مثل من بودید. هرچی یاد میگرفتید سریع شیر میکردید دنیای ما مثل الآن نبود. Dodgy
غایب
  پاسخ
#4
(۱۳۹۱ تير ۰۷, ۰۷:۳۴ ب.ظ)cyletech نوشته:
نقل قول:تازه دیدیش ؟ :دی
ای آدمای بد. همتون خیلی چیزارو میدونید ها. اگه مثل من بودید. هرچی یاد میگرفتید سریع شیر میکردید دنیای ما مثل الآن نبود. Dodgy

حالا یه چیزی بلد بودیم ها :دی Big GrinBig GrinBig GrinBig GrinTongueTongueTongueTongue
  پاسخ
تشکر شده توسط :
#5
نمی فهمم اصن برا چی کاربرد دارن ؟ یه جورایی انگار برا تسته :دی واس من که هیچ وقت پیش نیومده بخوام زمان رسپانس رو بالا ببرم بر عکس تمام تلاشمو می کنم زمان رسپانس بیاد پایین
  پاسخ
تشکر شده توسط :
#6
sleep واسه خیلی چیزها کاربرد داره.
مثلا در comet در سمت سرور.
برای بعضی موارد امنیتی مربوط به brute force یا timing attack هم ممکنه استفاده بشه.
وقتی میخوای توی یه حلقه مدام دور بزنی و شرط خاصی رو چک کنی، مثلا ایجاد یک فایل یا یک فرایند خارج از اسکریپت خودت، اونوقت اگر در هر دور حلقه یک sleep حتی با زمان خیلی کوتاه نذاری، پراسس بیهودهء زیادی رو بوجود میاری. در مدت sleep اجرای برنامه معلق میشه و CPU آزاد میشه که خیلی روی پایین آوردن CPU usage percentage تاثیر داره.
  پاسخ
تشکر شده توسط : cyletech zoghal hidensoft Hamid admin alri ali786 mehdints
#7
ولی sleep با unsleep چه فرقی داره ؟؟؟؟ ( به جز زمانشون که یکی میکرو ثانیه و یکی ثانیه هست )

manual واسه unsleep کامنت زده wait
واسه sleep زده sleep

خوب sleep , wait جفتشون یه کار میکنن دیگه !!!
  پاسخ
تشکر شده توسط :
#8
vejmad جان میشه توضیح بدی timing attack چطور با sleep ممکنه ؟
  پاسخ
تشکر شده توسط : hidensoft
#9
(۱۳۹۱ تير ۱۰, ۰۴:۲۵ ب.ظ)prg33 نوشته: vejmad جان میشه توضیح بدی timing attack چطور با sleep ممکنه ؟
در حملات timing attack از روی زمان پاسخ و بنابراین زمان اجرای برنامه متوجه میشن که چه عملیاتی داخل برنامه انجام شده. البته این حمله اغلب راحت و قطعی نیست و در خیلی موارد امکان نداره یا صرف نمیکنه، چون نیاز به تست ها و دقت زیادی داره، اما بهرحال چنین حمله ای داریم و در سناریوهای پیشرفته و درمورد چیزهای حساس و مهم ممکنه مورد استفاده قرار بگیره.

خب برای جلوگیری یا دشوارتر کردن timing attack ممکنه بیان و سعی کنن زمان اجرای برنامه رو یجوری ثابت نگه دارن، که sleep میتونه برای جبران کردن زمان مورد نیاز استفاده بشه. مثلا اگر بخوایم بیایم یه کاری کنیم که یک برنامه یا بخشی از اون همیشه یک زمان خاصی رو برای اجرا صرف کنه (صرفنظر از شرایط و عملیات داخلی برنامه)، مثلا یک دهم ثانیه، میتونیم در انتهای برنامه یا اون بخش خاص یک سنجش زمان اجرا بذاریم و مثلا اگر برنامه تا اونجا 5 صدم ثانیه طول کشیده، خودمون با usleep به اندازهء 5 صدم ثانیهء دیگر هم تاخیر ایجاد کنیم.

البته اینا بیشتر بحث تئوریک هست. در منابع گفته بودن اینطور روشها هم آسیب پذیر هستن و اشکالاتی دارن. بطور کلی جلوگیری کامل از حملات timing attack بسیار دشواره. اما من فکر میکنم حداقل در موارد حساس و جاهایی که ارزشش رو دارن، درمورد برنامه های واقعا حرفه ای و کامل از نظر امنیت، میتونیم با چندتا از اینطور ترفندها حداقل سعی کنیم که timing attack رو دشوارتر و پرهزینه تر کنیم.

حالا من یه چیزی میگم فکرم همه جا میره Big Grin
  پاسخ
تشکر شده توسط : cyletech ali786 mohsenkw
#10
(۱۳۹۱ تير ۱۱, ۰۹:۳۴ ق.ظ)vejmad نوشته:
(۱۳۹۱ تير ۱۰, ۰۴:۲۵ ب.ظ)prg33 نوشته: vejmad جان میشه توضیح بدی timing attack چطور با sleep ممکنه ؟
در حملات timing attack از روی زمان پاسخ و بنابراین زمان اجرای برنامه متوجه میشن که چه عملیاتی داخل برنامه انجام شده. البته این حمله اغلب راحت و قطعی نیست و در خیلی موارد امکان نداره یا صرف نمیکنه، چون نیاز به تست ها و دقت زیادی داره، اما بهرحال چنین حمله ای داریم و در سناریوهای پیشرفته و درمورد چیزهای حساس و مهم ممکنه مورد استفاده قرار بگیره.

خب برای جلوگیری یا دشوارتر کردن timing attack ممکنه بیان و سعی کنن زمان اجرای برنامه رو یجوری ثابت نگه دارن، که sleep میتونه برای جبران کردن زمان مورد نیاز استفاده بشه. مثلا اگر بخوایم بیایم یه کاری کنیم که یک برنامه یا بخشی از اون همیشه یک زمان خاصی رو برای اجرا صرف کنه (صرفنظر از شرایط و عملیات داخلی برنامه)، مثلا یک دهم ثانیه، میتونیم در انتهای برنامه یا اون بخش خاص یک سنجش زمان اجرا بذاریم و مثلا اگر برنامه تا اونجا 5 صدم ثانیه طول کشیده، خودمون با usleep به اندازهء 5 صدم ثانیهء دیگر هم تاخیر ایجاد کنیم.

البته اینا بیشتر بحث تئوریک هست. در منابع گفته بودن اینطور روشها هم آسیب پذیر هستن و اشکالاتی دارن. بطور کلی جلوگیری کامل از حملات timing attack بسیار دشواره. اما من فکر میکنم حداقل در موارد حساس و جاهایی که ارزشش رو دارن، درمورد برنامه های واقعا حرفه ای و کامل از نظر امنیت، میتونیم با چندتا از اینطور ترفندها حداقل سعی کنیم که timing attack رو دشوارتر و پرهزینه تر کنیم.

حالا من یه چیزی میگم فکرم همه جا میره Big Grin

Big GrinBig GrinBig GrinBig Grin

خیلی جالب بود این timing attack
مرسی از جوابت
Big GrinBig GrinBig Grin

ولی تو این نوع هک ها , خیلی عامل وجود داره خیلی خیلی خیلی سخت میشه نفوذ کرد .. Big Grin
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان