तथ्य यह है कि यह mysql पुस्तकालय का उपयोग करता है नहीं इसका मतलब है कि यह सर्वर के साथ एक राउंड ट्रिप करता है।
यह MySQL क्लाइंट लाइब्रेरी से कोड चलाता है, जो आपके PHP दुभाषिया के समान प्रक्रिया में लोड होता है। हालांकि आपको एक कनेक्शन की आवश्यकता है - उस फ़ंक्शन को ठीक से संचालित करने के लिए कुछ सर्वर सेटिंग्स को जानने की आवश्यकता है। लेकिन उन सेटिंग्स को PHP साइड में कनेक्शन जानकारी में कैश किया जाता है।
यदि आप इसे सत्यापित करना चाहते हैं (और आप linux पर हैं), तो एक साधारण स्क्रिप्ट लिखें जैसे:
<?php
$link = mysql_connect('localhost', 'user', 'pass');
echo "Connection done\n";
echo mysql_real_escape_string("this ' is a test");
?>
और इसे strace
. के माध्यम से चलाएं :
$ strace php t.php
.... # here comes the connection to mysql, socket fd == 3
connect(3, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = 0
fcntl(3, F_SETFL, O_RDWR) = 0
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
.... # talking with mysql here
poll([{fd=3, events=POLLIN}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
read(3, "8\0\0\0\n5.1.58-log\0\3\0\0\0K-?4'fL+\0\377\367!"..., 16384) = 60
...
read(3, "\7\0\0\2\0\0\0\2\0\0\0", 16384) = 11
# first php echo
write(1, "Connection done\n", 16Connection done ) = 16
# second php echo
write(1, "this \\' is a test", 17this \' is a test) = 17
munmap(0x7f62e187a000, 528384) = 0
....
केवल महत्वपूर्ण बात यह है कि दो write
echo
. के कारण होता है बयानों के बीच में कोई अन्य सिस्कल नहीं है - सिस्कल के बिना कोई नेटवर्क संचार संभव नहीं है (वैसे भी लिनक्स में यूज़रस्पेस से)।