डेटाबेस का उपयोग करें - यह केवल एकमात्र विकल्प है। यहां तक कि अगर थोड़ा सा समय लगता है। एक बार जब आप लॉगफाइल से शुरू करते हैं तो आप एक ट्रैक पर हैं जहां यह आपको दर्द का कारण बनता है - उदा। चलती सर्वर, फाइल अनुमति, भार संतुलन आदि ...
आप डेटाबेस खुला तो मुझे लगता है कि यह एक ही पंक्ति सम्मिलित करने के लिए शायद जल्दी होगा मिल गया है, तो निवारण होता है।
सुनिश्चित करने के लिए एक ही रास्ता संबंधित यह सब प्रदर्शन के साथ
हालांकि एक साधारण परीक्षण लिख सकते हैं और यह मापने के लिए ....
अद्यतन है: मैं एक त्वरित परीक्षण किया है - और काफी यकीन है कि अगर आप के लिए है खोलने के लिए और 10,000 लाइनों का एक परीक्षण का उपयोग कर फ़ाइल यह बंद एक ही गति या धीमी के बारे में:
लेकिन जब आप इस यह धीमा नीचे के रूप में देखा जा सकता है कर रही है कई प्रक्रियाओं के लिए शुरू करते हैं। यह 10 समवर्ती प्रक्रियाओं (सेकंड में आपके सभी समय)
DB time: 2.1695
DB time: 2.3869
DB time: 2.4305
DB time: 2.5864
DB time: 2.7465
DB time: 3.0182
DB time: 3.1451
DB time: 3.3298
DB time: 3.4483
DB time: 3.7812
File open time: 0.1538
File open time: 0.5478
File open time: 0.7252
File open time: 3.0453
File open time: 4.2661
File open time: 4.4247
File open time: 4.5484
File open time: 4.6319
File open time: 4.6501
File open time: 4.6646
Open close file time: 11.3647
Open close file time: 12.2849
Open close file time: 18.4093
Open close file time: 18.4202
Open close file time: 21.2621
Open close file time: 22.7267
Open close file time: 23.4597
Open close file time: 25.6293
Open close file time: 26.1119
Open close file time: 29.1471
function debug($d)
{
static $start_time = NULL;
static $start_code_line = 0;
if($start_time === NULL)
{
$start_time = time() + microtime();
$start_code_line = $code_line;
return 0;
}
printf("$d time: %.4f\n", (time() + microtime() - $start_time));
$fp = @fopen('dbg.txt','a');
fprintf($fp,"$d time: %.4f\n", (time() + microtime() - $start_time));
fclose($fp);
$start_time = time() + microtime();
$start_code_line = $code_line;
}
function tfile()
{
$fp = @fopen('t1.txt','a');
for ($i=0;$i<10000;$i++)
{
$txt = $i."How would you log, which do you think is quicker:How would you log, which do you think is quicker:";
fwrite($fp,$txt);
}
fclose($fp);
}
function tfile_openclose()
{
for ($i=0;$i<10000;$i++)
{
$fp = @fopen('t1.txt','a');
$txt = $i."How would you log, which do you think is quicker:How would you log, which do you think is quicker:";
fwrite($fp,$txt);
fclose($fp);
}
}
function tdb()
{
$db = mysql_connect('localhost','tremweb','zzxxcc');
$select_db = mysql_select_db('scratch');
if (!$select_db)
die('Error selecting database.');
for ($i=0;$i<10000;$i++)
{
$txt = $i."How would you log, which do you think is quicker:How would you log, which do you think is quicker:";
mysql_query("INSERT INTO tlog values('".$txt."')");
}
}
debug("");
tfile();
debug("File open");
tfile_openclose();
debug("Open close file");
tdb();
debug("DB");
स्रोत
2008-10-08 17:10:09
यही कारण है कि विभिन्न प्रक्रियाओं को अलग-अलग फ़ाइलों को लिखना चाहिए ... बाद में। खोलने/समापन के साथ आपको चिंता करने की ज़रूरत है, जब आप लॉगिंग अंतराल पर फ़ाइलों को घुमाते हैं तो लॉग को बफर करना होता है (एक बार एक घंटे इस तरह के भार के लिए ठीक है)। – SquareCog
दरअसल - हालांकि मैं लॉग फ़ाइल में बिल्कुल नहीं लिखूंगा। एक बार जब आप कुल और घूर्णन करने जैसी चीजें करना शुरू कर देते हैं - यह प्रक्रिया की तरह बन जाती है जो गलत हो जाएगी - और पहले मामले में सीपीयू के मामले में थोड़ा लाभ के लिए। डाटाबेस डेटा संग्रहित करने और पुनर्प्राप्त करने में अच्छे हैं .... –
ओपी यहां, यह मुझे विश्वास दिलाता है, देरी से सम्मिलित –