PDA

View Full Version : حرفه ای: مشکل جدی و مهم با foreach



trasilver
یک شنبه 14 مهر 1392, 19:05 عصر
سلام خدمت دوستان .
ما توی موتور یک بازی آنلاین از foreach استفاده کردیم .
ولی متاسفانه وقتی تعداد آنلاینی های بازی بالا باشد ، foreach اطلاعات داخل خود را با بقیه اطلاعات دیگر قاطی می کند !
خوب می دونم متوجه نشدید ! بذارید با یک مثال شما رو روشن کنم ...
ما در اینجا اومدیم حملاتی که در حال اجرا هستند و تایمشون به 0 ثانیه رسیده است رو میگیریم .
در یکی از حملات 10 عدد سرباز هست و در یکی به فرض مثال 15 عدد .
حالا موقعی که این حملات بالا باشند اولی که 10 عدد بود را 15 حساب می کند و دومی که 15 عدد بود را 10 حساب می کند یا اون رو هم 15 حساب می کند و ...
از دستور unset() هم استفاده کردم ولی بی فایده بود ...
ممنون میشم یه کمکی بکنید :بوس:

MMSHFE
یک شنبه 14 مهر 1392, 20:43 عصر
این مشکل قاعدتاً نباید ارتباطی به foreach داشته باشه و بنظر تنظیمات سرور شما (و احتمالاً تنظیمات PHP) مشکل داره. باید سرور درست تنظیم بشه تا تداخلی در حافظه پردازشهای مختلف پیش نیاد. مطمئن هستین نسخه Thread-Safe زبان PHP نصب شده؟

trasilver
یک شنبه 14 مهر 1392, 21:18 عصر
والا نمی دونم ! به کسی دادیم برامون کانفیگ کرده ! اطلاعی ندارم من ...
با تشکر .

trasilver
دوشنبه 15 مهر 1392, 01:04 صبح
شرمنده ! دوتا سوال داشتم !
یکی این که از کجا بفهمیم نصب هست یا نیست ؟
و دیگری این که چجوری روی لینوکس نصبش کنیم !
با تشکر .

MMSHFE
دوشنبه 15 مهر 1392, 07:41 صبح
1- توی phpinfo ببینید در قسمت Thread Safety نوشته enabled یا نه.
2- جستجو کنید (لینک (https://www.google.com/search?q=install+thread+safe+php+on+linux&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a&channel=fflb))
3- حتماً سعی کنید PHP رو بصورت CGI (به روش FastCGI و...) نصب کنید. نصب PHP بعنوان یک ماژول Apache (بصورت mod_php) مشکلات امنیتی جدی داره.

plague
دوشنبه 15 مهر 1392, 19:30 عصر
من فکر میکنم مشکل از برنامه نویسی باشه
چون توی حلقه پیش میاد به علت استفاده از نام های یکسان برای لوپ ها و دقت نکردن برنامه نویس اطلاعات قاطی بشن
شما میتونید اون حلقه رو جدا کنید و ببرید توی یک محیط تست , تعداد بالایی داده رو بهش بدین برای پردازش و البته کاری کنید که در هر دور اجرا شدن اطلاعات اون لوپ رو در خروجی چاپ کنه
اینجوری اگه مشکلی در کار باشه حتما متوجه میشید