PDA

View Full Version : سوال: وقتی کوئری انجام می شه و سطرها انتخاب می شن، اطلاعات تا زمان بسته شدن اتصال کجا نگه داری می شن؟



idocsidocs
چهارشنبه 05 بهمن 1390, 00:15 صبح
وقتی کوئری انجام می شه و سطرها انتخاب می شن، اطلاعات بازیابی شده تا زمان بسته شدن اتصال کجا نگه داری می شن؟

آیا توابعی مثل num_rows و fetch_assic و... توی دیتابیس اجرا می شن یا نه؟

لطفا در این مورد توضیح بدید.

MMSHFE
چهارشنبه 05 بهمن 1390, 08:13 صبح
محل ذخیره اطلاعات موفق وابسته به دیتابیس هست. مثلاً اگه نوع موتور رو MEMORY بگذارین، توی RAM انجام میشه ولی در سایر موتورها، یک جدول موقت درست میشه و اونجا کارها انجام میشه. دستورات mysql_fetch_assoc و... هم همونجا اجرا میشن. در پایان هم میتونید با mysql_free_result هم میتونید اطلاعات موقت رو حذف کنید (البته اختیاریه و با پایان یافتن اسکریپت، بطور خودکار انجام میشه).

tux-world
چهارشنبه 05 بهمن 1390, 10:23 صبح
آيا اين راهي براي نا امن كردن محسوب ميشه اگه يه وقت زمان اسكريپت بيشتر طول بكشه؟ هكر ميتونه بهش دسترسي داشته باشه؟

mbf5923
چهارشنبه 05 بهمن 1390, 11:01 صبح
وقتی شما گزارشگیری میکنید اطلاعات بدست اومده در یک شبه تیبل قرار میگیره که توسط دستورات زبان برنامه نویسی سمت سرور قابل دسترسی هستش
پس این خودش به تنهایی خطر امنیتی محسوب نمیشه مگه اینکه هکرها توسط حفره های موجود در اسکریپت مورد استفاده به اون دیتا دست پیدا کنن
که این باید توسط برنامه نویس مدیریت و حفره ای امنیتی از بین برن

idocsidocs
چهارشنبه 05 بهمن 1390, 12:33 عصر
مثلاً اگه نوع موتور رو MEMORY بگذارین، توی RAM انجام میشه
چرا این نوع اطلاعات رو توی رم ذخیره می کنه و بقیه جدول موقت می سازن؟

در سایر موتورها، یک جدول موقت درست میشه
تعداد این جدولها محدودیت دارن یا نه؟

وقتی شما گزارشگیری میکنید اطلاعات بدست اومده در یک شبه تیبل قرار میگیره که توسط دستورات زبان برنامه نویسی سمت سرور قابل دسترسی هستشمنظورتون از دستورات زبان برنامه نویسی چیه؟ منظور همون پی اچ پی هست یا زبان دیگه ی منظورتونه؟

MMSHFE
چهارشنبه 05 بهمن 1390, 12:49 عصر
چرا این نوع اطلاعات رو توی رم ذخیره می کنه و بقیه جدول موقت می سازن؟

برای سرعت بیشتر. به مثال زیر دقت کنید:

CREATE TABLE test ENGINE=MEMORY
SELECT ip,SUM(downloads) AS down
FROM log_table GROUP BY ip;
SELECT COUNT(ip),AVG(down) FROM test;
DROP TABLE test;

توی مثال فوق، برای انجام کارهای موقت یک جدول موقتی توی RAM ایجاد شده و بعد از اینکه کارمون تموم شد، اون رو DROP میکنیم. منبع (http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html)


تعداد این جدولها محدودیت دارن یا نه؟

تا جایی که بررسی کردم، نه. هرچقدر فضای هاست و RAM سرور بهتون اجازه بده میتونید ایجاد کنید.


منظورتون از دستورات زبان برنامه نویسی چیه؟ منظور همون پی اچ پی هست یا زبان دیگه ی منظورتونه؟
همون PHP منظورشون هست. کلاً نباید راه نفوذی برای SQL Injection و... باز بگذارین و اگه از این نظر اسکریپتتون امن باشه، نمیشه از این راه نفوذ کرد.
موفق باشید.