PDA

View Full Version : آیا مجبوریم برای هر اتصال بانک رو به مد یونیکد برد؟



roze_sepideh
دوشنبه 07 آبان 1386, 13:40 عصر
برای جلوگیری از تبدیل رشته ها در mysql به ؟؟؟؟ از کد زیر استفاده میکنم:


$this->db->Execute("SET CHARACTER SET utf8;");


آیا مجبوریم برای هر بار که connection به دیتابیس باز میشود این خط رو نوشت؟
راه بهتری هست؟

Folaani
دوشنبه 07 آبان 1386, 14:03 عصر
معمولا بله. برای هر اتصال اینکار رو باید انجام بدید.
اتصالات هم بعد از پایان اسکریپت بسته میشن مگر اینکه اتصال شما از نوع Persistent باشه؛ ولی توجه کنید که از این نوع اتصال هم هرگز نباید فقط بخاطر چنین هدفی استفاده کرد.
راه دیگه دستکاری تنظیمات پیش فرض مای اس کیو ال هست در فایلهای پیکربندی اون؛ بنابراین باید دسترسی ادمینی به سرور داشته باشید.
ضمنا شما با این دستور چه مشکلی دارید؟ خطر خاصی نداره!!
اگر میخواید زحمت خودتون کم بشه و غیره، میتونید این دستور رو در متد کلاس یا تابعی طراحی شده توسط خودتون که برای کانکت شدن به مای اس کیو ال مورد استفاده قرار میدید درج کنید، و غیره!

roze_sepideh
دوشنبه 07 آبان 1386, 16:23 عصر
من میدونم اذیت نمیکنه....الان هم در همون لایه DAL قرار داره و چندین بار نوشته نمیشه...
اما در مواقعی چندین Transaction داریم و مدام داریم به دیتابیس Select میزنیم...برای بهبود کارائی آدم به فکرش راه های مختلفی میرسه گفتم شاید بشه کاری کرد که همین یک خط هم حذف بشه از چرخه کاری.

Folaani
سه شنبه 08 آبان 1386, 18:18 عصر
مگه کانکشن رو میبندی فوری؟ لازم نیست همچین کاری بکنید. یکبار کانکت شدی دیگه تا وقتی کانکشن بسته نشده که نیازی نیست اون دستور رو دوباره بدی.
اگر میخواید بین چند اسکریپت هم کانکشن بسته نشه میتونید از همون روش کانکشن پایدار استفاده کنید؛ البته بطور معمول اگر تعداد زیادی صفحه های کار با دیتابیس دارید که با فاصلهء کم و پشت سرهم اجرا میشن.
تازه اینطور دستورات درسته که با سینتاکس اس کیو ال نوشته میشن، اما درواقع فکر میکنم هیچ دخلی به انجین دی بی ام اس پیدا نمیکنن و در لایهء بالاترش هستن که خود سرور مای اس کیو ال هست. بنابراین به چشم یک دستور اس کیو ال بهش نگاه نکنید که بنظر بیاد حالا یه کار گنده و شاقی میکنه در ارتباط با دیتابیس و جدولها! خیلی از این حرفها ناچیزتره.
مای اس کیو ال یکسری دستورات مدیریتی و تنظیمی خودش رو داره که با سینتاکس اس کیو ال و ظاهرا جزو اون هستن، اما درواقع خود مای اس کیو ال بعنوان یک برنامه اونها رو اجرا میکنه و به انجین بانک داد نمیشن. اینها در حد ست کردن یک متغییر و یک سویچ و شرط ساده در الگوریتم هستن. تقریبا هیچ بار قابل به حساب آمدن و مصرف منابعی ندارن جز همون انتقال متن دستور از کلاینت به سرور.