<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог на Венелин Кочев &#187; MySQL</title>
	<atom:link href="http://cyberroot.net/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://cyberroot.net</link>
	<description></description>
	<lastBuildDate>Mon, 12 Jul 2010 10:02:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>MySQL table crash</title>
		<link>http://cyberroot.net/2009/02/16/mysql-table-crash/</link>
		<comments>http://cyberroot.net/2009/02/16/mysql-table-crash/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 00:41:59 +0000</pubDate>
		<dc:creator>Venelin Kochev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Дири Mp3]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[myisamchk]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://cyberroot.org/?p=51</guid>
		<description><![CDATA[Днес имаше crash на основната mysql таблицата на dirimp3.com около час борба и check-ване и пускане на разни tools, сайта отново е на лице. Част от лога: # ./myisamchk -c dirimp3/music.MYI Checking MyISAM file: dirimp3/music.MYI myisamchk: warning: 1 client is using or hasn&#8217;t closed the table properly - check file-size - check record delete-chain - [...]]]></description>
			<content:encoded><![CDATA[<p>Днес имаше crash на основната mysql таблицата  на <a href="http://dirimp3.com" title="търсачката за музика">dirimp3.com</a> около час борба и check-ване и пускане на разни tools, сайта отново е на лице.</p>
<p>Част от лога:</p>
<blockquote><p># ./myisamchk -c dirimp3/music.MYI<br />
Checking MyISAM file: dirimp3/music.MYI<br />
myisamchk: warning: 1 client is using or hasn&#8217;t closed the table properly<br />
- check file-size<br />
- check record delete-chain<br />
- check key delete-chain<br />
- check index reference<br />
- check data record references index: 1<br />
- check data record references index: 2<br />
- check data record references index: 3<br />
- check data record references index: 4<br />
myisamchk: error: Found key at page 32574464 that points to record outside datafile<br />
- check record links<br />
myisamchk: error: Keypointers and record positions doesn&#8217;t match<br />
MyISAM-table &#8216;dirimp3/music.MYI&#8217; is corrupted</p></blockquote>
<blockquote><p># ./myisamchk -r dirimp3/music.MYI<br />
- recovering (with sort) MyISAM-table &#8216;dirimp3/music.MYI&#8217;<br />
- Fixing index 1<br />
- Fixing index 2<br />
- Fixing index 3<br />
- Fixing index 4</p></blockquote>
<blockquote><p># ./myisamchk -o dirimp3/music.MYI<br />
- recovering (with keycache) MyISAM-table &#8216;dirimp3/music.MYI&#8217;<br />
Duplicate key  4 for record at    1726560 against new record at     423740<br />
Duplicate key  4 for record at   46808668 against new record at    6501208<br />
Killed</p></blockquote>
<p>Това е крайния резултат:</p>
<blockquote><p>MyISAM file:         <strong>xxxx/</strong>dirimp3/music.MYI<br />
Record format:       Packed<br />
Character set:       utf8_general_ci (45)<br />
File-version:        1<br />
Creation time:       2009-01-25 15:32:44<br />
Recover time:        2009-02-15 18:47:35<br />
Status:              open,changed<br />
Datafile length:         142761600  Keyfile length:         153101312<br />
Max datafile length: 281474976710654  Max keyfile length: 288230376151710719<br />
Recordlength:                  101</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://cyberroot.net/2009/02/16/mysql-table-crash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternative PHP Cache</title>
		<link>http://cyberroot.net/2008/04/04/alternative-php-cache/</link>
		<comments>http://cyberroot.net/2008/04/04/alternative-php-cache/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 12:10:06 +0000</pubDate>
		<dc:creator>Venelin Kochev</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[Cache]]></category>

		<guid isPermaLink="false">http://cyberroot.org/?p=9</guid>
		<description><![CDATA[APC е PECL extension за PHP, който позволява кеширането на данни и по този начин примерно се избягва изпълнението на една MySQL заявка и ако тя връща едни и същи данни сами се сещате, че е излишно да се изпълнява всеки път, разбира се може да се хардкод-не резултата в кода, но по добрия вариант [...]]]></description>
			<content:encoded><![CDATA[<p><a title="APC" href="http://bg.php.net/apc" target="_blank">APC</a> е <a href="http://pecl.php.net/" target="_blank"> PECL</a> extension за PHP, който позволява кеширането на данни и по този начин примерно се избягва изпълнението на една MySQL заявка и ако тя връща едни и същи данни сами се сещате, че е излишно да се изпълнява всеки път, разбира се може да се хардкод-не резултата в кода, но по добрия вариант за мен е кеширането. Преди време тествах различните кеширащи системи от тези тестове са ми останали няколко класове, които реших да споделя.</p>
<p>APC Cache Class:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Alternative PHP Cache Class
 * 
 * @param 	      int $lifetime
 * @author 	      Venelin Kochev &lt; vkwebdev@gmail.com &gt;
 * @version 	      1.0
 * @link 		http://cyberroot.org
 * @copyright 	     2008 Venelin Kochev
 *
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> APCCache<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Cache life time</span>
	<span style="color: #666666; font-style: italic;">//@param: integer</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$lifetime</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3600</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$lifetime</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
	   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">extension_loaded</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'apc'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;b&gt;Fatal Error:&lt;/b&gt; Cache::__construct() - The apc extension must be loaded for using Cache !'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   <span style="color: #009900;">&#125;</span>
&nbsp;
           <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lifetime</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lifetime</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$lifetime</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     * Save cache data.
     *
     * @param array $data
     * @param string $id
     * @return boolean
     */</span>	
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> apc_store<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lifetime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     * Load cache by Key
     *
     * @param string $id
     * @return array
     * 
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> load<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #000088;">$tmp</span> <span style="color: #339933;">=</span> apc_fetch<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tmp</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$tmp</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     * Delete cache by Key.
     *
     * @param string $id
     * @return boolean
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> remove<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> apc_delete<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Използва се по следния начин:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000088;">$lifetime</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3500</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$cache</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> APCCahce<span style="color: #009900;">&#40;</span><span style="color: #000088;">$lifetime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cache</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'count_category'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> GetCount<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// трябва да връща резултата от MySQL query-то.</span>
   <span style="color: #000088;">$cache</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$count</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'count_category'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Така се прави проверка дали кеш-а съществува, ако го няма се създава, при следващото извикване заявката няма да се изпълни и ще бъде зареден кеш-а. <img src='http://cyberroot.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cyberroot.net/2008/04/04/alternative-php-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
