PDA

View Full Version : اجرای یک حلقه تا چند میلیون بار



ARIARAD
یک شنبه 21 تیر 1394, 06:29 صبح
سلام خدمت همگی
بنده نیاز دارم که یک دستوری چند میلیون بار تکرار بشه
و با توجه به محدودیت زمانی اجرای دستورات php استفاده از حلقه شدنی نیست

ممنون میشم دوستان راهنمایی کنن

us1234
یک شنبه 21 تیر 1394, 08:54 صبح
قبل از حلقه این کدها را قرار دهید :



@set_time_limit(0);
@ini_set('max_execution_time',0);


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

Unique
یک شنبه 21 تیر 1394, 14:34 عصر
set_time_limit روی سرور های اشتراکی به خاطر safe_mode کار نمیکنه.
میشه توضیح بدین میخواین چی کار کنین ؟ شاید ابزار نامناسبی را به کار می برید.

ARIARAD
سه شنبه 23 تیر 1394, 09:52 صبح
set_time_limit روی سرور های اشتراکی به خاطر safe_mode کار نمیکنه.
میشه توضیح بدین میخواین چی کار کنین ؟ شاید ابزار نامناسبی را به کار می برید.

ببینید بنده می خوام یه سری اطلعاتو تو دیتابیسم ذخیره کنم
ولی حجم این اطلاعات خیلی بالاست و حدود 4 ملیون اسم و مشخصات هست
راهی جز اجرای حلقه به ذهنم نرسید
اگه راهی به ذهنتون میرسه لطفا بگید

H:Shojaei
سه شنبه 23 تیر 1394, 10:15 صبح
ببینید بنده می خوام یه سری اطلعاتو تو دیتابیسم ذخیره کنم
ولی حجم این اطلاعات خیلی بالاست و حدود 4 ملیون اسم و مشخصات هست
راهی جز اجرای حلقه به ذهنم نرسید
اگه راهی به ذهنتون میرسه لطفا بگید
خوب این 4 میلیون به چه صورت باید درج بشه؟ کجا باید درج بشه؟
همش یکجا حتما باید باشه؟ یا تیکه تیکه هم میشه انجامش داد؟
هر چند وقت 4 میلیون دارید که باید درج بشه؟
حجم که میگید به چه لحاظ؟ به لحاظ تعداد یا حجم هرکدوم؟
به همه اینا بستگی داره...

Unique
سه شنبه 23 تیر 1394, 16:11 عصر
همونظور که جناب شجاعی گفتم به خیلی موارد بستگی داره اما معمولا این اطلاعات قرار هست یکبار روی سرور بارگزاری بشن و بهترین راه اینه که خروجی مناسبی مثل SQL یا CSV بگیرین و با ابزار های خود mysql وارد سازی را انجام بدین و هیچ نیازی هم به حلقه و این داستان ها نیست.

ARIARAD
چهارشنبه 24 تیر 1394, 04:01 صبح
خوب این 4 میلیون به چه صورت باید درج بشه؟ کجا باید درج بشه؟
همش یکجا حتما باید باشه؟ یا تیکه تیکه هم میشه انجامش داد؟
هر چند وقت 4 میلیون دارید که باید درج بشه؟
حجم که میگید به چه لحاظ؟ به لحاظ تعداد یا حجم هرکدوم؟
به همه اینا بستگی داره...

ببینید تقریبا میشه گفت چهار ملیون پست
یعنی چهار ملیون جدول جدا با ای دی های جدا و توضیحات جدا و ...
نمیشه همرو با هم توی دیتابیس ذخیره کرد
چون یه جورایی باید قبلش ساخته بشن ...

حالا راهی به ذهنتون میرسه؟
الان مثلا من اومدم یک حلقرو 50 بار تکرار می کنم و ای دی اخرین حلقرو ذخیره می کنم و بعد رفرش و دوباره 50 تای دیگه ولی چند تا مشکل داره هم این که سرعت رو خیلی میاره پاین و این که باز هم با این حال تایم اوت میده بعضی وقتا

Unique
چهارشنبه 24 تیر 1394, 10:52 صبح
ببینید تقریبا میشه گفت چهار ملیون پست
یعنی چهار ملیون جدول جدا با ای دی های جدا و توضیحات جدا و ...
نمیشه همرو با هم توی دیتابیس ذخیره کرد
چون یه جورایی باید قبلش ساخته بشن ...

حالا راهی به ذهنتون میرسه؟
الان مثلا من اومدم یک حلقرو 50 بار تکرار می کنم و ای دی اخرین حلقرو ذخیره می کنم و بعد رفرش و دوباره 50 تای دیگه ولی چند تا مشکل داره هم این که سرعت رو خیلی میاره پاین و این که باز هم با این حال تایم اوت میده بعضی وقتا

دوست عزیز بگذار راحتت کنم ! تا قشنگ و کامل توضیح ندی هیچ کسی حتی اگه بدونه هیچ کمکی نمیتونه بهت بکنه. بیا قشنگ بگو data چیه !؟ داری از جاییی میگیری‌؟ توی database دیگه ایه ؟! به صورت اتوماتیک داری تولیدش میکنی !؟ اصلا محتوا چیه !؟ جدال چی هستند ؟! کلا اینطوری فقط زمان رسیدن به جوابت را کشش میدی !

ARIARAD
چهارشنبه 24 تیر 1394, 19:40 عصر
دوست عزیز بگذار راحتت کنم ! تا قشنگ و کامل توضیح ندی هیچ کسی حتی اگه بدونه هیچ کمکی نمیتونه بهت بکنه. بیا قشنگ بگو data چیه !؟ داری از جاییی میگیری‌؟ توی database دیگه ایه ؟! به صورت اتوماتیک داری تولیدش میکنی !؟ اصلا محتوا چیه !؟ جدال چی هستند ؟! کلا اینطوری فقط زمان رسیدن به جوابت را کشش میدی !
بله محتوا توسط curl از سایت های دیگه گرفته میشه و بعد توی دیتابیس خودم ذخیره میشه
سر جمع 4 - 5 تا فیلد داره که همشونم متنی هست اسم توضیحات ای دی و لینک
امید وارم کامل باشه چون نمیی دونم دیگه چجوری توضیح بدم

H:Shojaei
چهارشنبه 24 تیر 1394, 22:39 عصر
چیزی که به ذهن من رسید و باید بررسی بشه خوب میتونید با cronjob انجام بدین به صورتی که مثلا هر 10 دقیقه مثلا 100 مطلب یا بیشتر تا جایی که انجام میشه انجام بده و باقیشو توی سیکل بعد...
یا میتونید سایت به سایت این کارو انجام بدین... یکی که تموم شد بعدی رو چند ثانیه یا دقیقه بعد شروع کنه...

Unique
چهارشنبه 24 تیر 1394, 23:59 عصر
له محتوا توسط curl از سایت های دیگه گرفته میشه و بعد توی دیتابیس خودم ذخیره میشه
سر جمع 4 - 5 تا فیلد داره که همشونم متنی هست اسم توضیحات ای دی و لینک
امید وارم کامل باشه چون نمیی دونم دیگه چجوری توضیح بدم

روی سرور shared کلا قضیه منتفیه. اگه vps داشته باشی میتونی timeout را نا محدود کنی اما دوست عزیز php روی apache برای این کار ها خوب نیست ، اسکریپت php را بنویس و توی ترمنیال صداش بزن تا توی پس زمینه کار را برات انجام بده. میتونی هم یک cron بسازی که مثلا هر روز یا هر چند ساعت اطلاعات جدید را بگیره. کار را باید با همون حلقه انجام بدی اما نه با php از روی وب سرور.