هومن
3 سال پیش توسط هومن مطرح شد
4 پاسخ

بهینه سازی php

سلام دوستان،

من روی سرور مجازیم یک اسکریپت با زبان php نوشتم و ران کردم که داخلش معاملات جمع و تفریق و تقسیم و اینجور چیزا انجام میشه
حدود 1000 خط هم هست

داخل قسمت پردازش هم 1.5 گیگ رم و 35 درصد پردازنده رو مصرف میکنه

نکته : این اسکریپت داخل حلقه بی نهایت اجرا میشه

چیکار کنم مصرف رم و پردازشم کاهش پیدا کنه ؟


ثبت پرسش جدید
AriaieBOY
تخصص : TALL Stack Lover
@ariaieboy 3 سال پیش مطرح شد
1

به احتمال قوی چون برنامه به صورت دائم در حال اجرا هست یکسری متغیر ایجاد میکنه داخل حافظه و خوب چون اسکریپت هیچ موقع تموم نمیشه در نتیجه این حافظه هم آزاد نمیشه.

یکبار اسکریپت متوقف کنید حافظه را خالی کنید. سپس اسکریپت مجددا ران کنید اگر به مرور حافظه زیاد میشه صد در صد همین مسئله ای هست که من گفتم.
اگر سرور هست از طریق ابزار هایی مثل htop میتونید دقیق ببینید چه پروسس داره بیشتری مموری را مصرف میکنه اگر پروسس مربوط به برنامتون باشه میتونید با ابزار های دیباگر بررسی کنید که دقیقا چی داره حافظه مصرف میکنه و بهینه سازی انجام بدید.

یک راه حل بهینه تر به نسبت لوپ بینهایت استفاده از event loop مثل ایونت لوپ reactphp هست.


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
-1

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


هومن
تخصص : گرافیک، طراحی رابط کاربری، Bac...
@houman 3 سال پیش آپدیت شد
0

@gomnam
سومین باره که ریفکتور می‌کنم ‌تمیز مینویسم
دیگه خیلی تمیزه

اما معادلات سختی انجام نمیده که یک و نیم گیگ رم بخواد

فقط چندتا شرط اعمال شده که اگه true باشه فلان کارو انجام میده
حدود 30 تا شرط هست که اکثرا تو زمان false میشن و احتمال true شدنشون تو ساعت چیزی بین 10-20 بار در ساعته

بعد از true شدن معادلات رو هم انجام میدن

درضمن من sleep هم گذاشتم برای کدم


هومن
تخصص : گرافیک، طراحی رابط کاربری، Bac...
@houman 3 سال پیش مطرح شد
0

کلا غیر منطقیه برای همچین کدی 1.5 گیگ رم بخواد


AriaieBOY
تخصص : TALL Stack Lover
@ariaieboy 3 سال پیش مطرح شد
1

به احتمال قوی چون برنامه به صورت دائم در حال اجرا هست یکسری متغیر ایجاد میکنه داخل حافظه و خوب چون اسکریپت هیچ موقع تموم نمیشه در نتیجه این حافظه هم آزاد نمیشه.

یکبار اسکریپت متوقف کنید حافظه را خالی کنید. سپس اسکریپت مجددا ران کنید اگر به مرور حافظه زیاد میشه صد در صد همین مسئله ای هست که من گفتم.
اگر سرور هست از طریق ابزار هایی مثل htop میتونید دقیق ببینید چه پروسس داره بیشتری مموری را مصرف میکنه اگر پروسس مربوط به برنامتون باشه میتونید با ابزار های دیباگر بررسی کنید که دقیقا چی داره حافظه مصرف میکنه و بهینه سازی انجام بدید.

یک راه حل بهینه تر به نسبت لوپ بینهایت استفاده از event loop مثل ایونت لوپ reactphp هست.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام