Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP स्क्रिप्ट में मेमोरी लीक

यह स्मृति रिसाव केवल एक समस्या होगी यदि यह "स्मृति समाप्त" त्रुटि के साथ स्क्रिप्ट को मार रहा है। PHP किसी भी अनुपयोगी वस्तु/चर को अपने आप कूड़ा-करकट इकट्ठा कर लेगा, लेकिन संग्राहक तब तक किक नहीं करेगा जब तक कि कचरा संग्रह एक बहुत महंगा ऑपरेशन हो सकता है।

यदि आप समान वस्तुओं/चरों का लगातार पुन:उपयोग कर रहे हैं, तो भी स्मृति उपयोग में वृद्धि देखना सामान्य है - यह तब तक नहीं है जब तक कि स्मृति उपयोग एक निश्चित स्तर से अधिक नहीं हो जाता है कि कलेक्टर आग लगा देगा और घर को साफ कर देगा।

मुझे संदेह है कि यदि आप उपयोगकर्ता आईडी को समूहों में बैचते हैं और कम अपडेट जारी करते हैं, तो प्रत्येक के साथ अधिक रिकॉर्ड बदलते हैं, तो आप चीजों को बहुत तेजी से चला सकते हैं। जैसे निम्न कार्य करें:

UPDATE user_roundscores SET ursUpdDate=NOW() WHERE ursUserTeamIdFK IN (id1, id2, id3, id4, id5, etc...)

इसे एक-अपडेट-प्रति-उपयोगकर्ता करने के बजाय। DB इंटरफ़ेस परत के माध्यम से कम राउंड-ट्रिप और सर्वर पर अधिक समय =तेज़ चलना।

साथ ही, अब इसे लाखों उपयोगकर्ताओं तक विस्तारित करने के प्रभाव पर विचार करें, जैसा कि आप एक टिप्पणी में कहते हैं। एक लाख अलग-अलग अपडेट को चलने में गैर-तुच्छ समय लगेगा, इसलिए NOW() "स्थिर" नहीं होगा। यदि पूर्ण रन करने में 5 मिनट लगते हैं, तो आपको ursUpdDate की एक विस्तृत विविधता प्राप्त होगी टाइमस्टैम्प। आप एक NOW() . को कैशिंग करने पर विचार कर सकते हैं सर्वर-साइड वैरिएबल में कॉल करें और उस वेरिएबल के लिए अपडेट जारी करें:

 SELECT @cachednow :p NOW();
 UPDATE .... SET ursUpDate = @cachednow WHERE ....;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मेरे पास MySQL में तालिकाओं की संख्या गिनने के लिए क्वेरी

  2. एक MySQL डंप उत्पन्न करने के लिए एक .php फ़ाइल का उपयोग करना

  3. स्प्रिंग जेपीए application.properties useSSL

  4. क्या Mysql के पास mssql की तरह @@ ROWCOUNT के बराबर है?

  5. ज़ेंड फ्रेमवर्क के साथ कई संग्रहीत प्रक्रियाओं को कॉल करें