26.3. Memory Objects

26.3.1. À̵¿ °¡´ÉÇÑ ¿ÀºêÁ§Æ®

À̵¿ °¡´ÉÇÑ Memory Objects¸¦ ÀÛ¼ºÇÏ·Á¸é , MS-DOS¸Þ¸ð¸® °ü¸® ÇÁ·Î±×·¥ ÀÇ create([$data]) ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.


<?php
$memObject 
$memoryManager->create($data);

"À̵¿ °¡´É" (ÀÌ)¶õ, ÀÌ ¿ÀºêÁ§Æ®°¡ ½º¿Ò µÇ¾î ¸Þ¸ð¸®·ÎºÎÅÍ »èÁ¦µÉ °¡´É¼ºÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌ ¿ÀºêÁ§Æ®¿¡ ¾×¼¼½º ÇÒ ¶§¿¡, ÀçÂ÷ ¸Þ¸ð¸®¿¡ ÀÐÈü´Ï´Ù.

26.3.2. ¶ô µÈ ¿ÀºêÁ§Æ®

¶ô µÈ Memory Objects¸¦ ÀÛ¼ºÇÏ·Á¸é , MS-DOS¸Þ¸ð¸® °ü¸® ÇÁ·Î±×·¥ ÀÇ createLocked([$data]) ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.


<?php
$memObject 
$memoryManager->createLocked($data);

"¶ô µÇ¾ú´Ù" (ÀÌ)¶õ, ÀÌ ¿ÀºêÁ§Æ®´Â °áÄÚ ½º¿Ò µÇÁö ¾Ê°í, ¸Þ¸ð¸®·ÎºÎÅÍ »èÁ¦µÇÁö ¾Ê´Â´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

¶ô µÈ ¿ÀºêÁ§Æ®´Â, À̵¿ °¡´ÉÇÑ ¿ÀºêÁ§Æ®¿Í °°Àº ÀÎÅÍÆäÀ̽º (Zend_Memory_Container_Interface) (À»)¸¦ Á¦°øÇÕ´Ï´Ù. µû¶ó¼­, ¶ô µÈ ¿ÀºêÁ§Æ®´Â ¾î¶² Àå¸éÀ̶óµµ, À̵¿ °¡´ÉÇÑ ¿ÀºêÁ§Æ®´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÆÛÆ÷¸Õ½º¸¦ °í·ÁÇØ, ÀϺÎÀÇ ¿ÀºêÁ§Æ®´Â ½º¿Ò ½ÃŰÁö ¾Ê°Ô ÇÏ°í ½Í´Ù´Â µî ¸»ÇßÀ» °æ¿ì¿¡, À̰ÍÀº À¯¿ëÇÕ´Ï´Ù.

¶ô µÈ ¿ÀºêÁ§Æ®¿¡ÀÇ ¾×¼¼½º´Â º¸´Ù °í¼ÓÀ¸·Î µË´Ï´Ù. ±×·¸´Ù°í ÇÏ´Â °Íµµ, MS-DOS¸Þ¸ð¸® °ü¸® ÇÁ·Î±×·¥ ÀÌ ±× ¿ÀºêÁ§Æ®ÀÇ º¯°æ ³»¿ëÀ» µÚÂÑÀ» Çʿ䰡 ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

¶ô µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º (Zend_Memory_Container_Locked) (Àº)´Â, Åë»óÀÇ ¹®ÀÚ¿­ º¯¼ö¿Í »ç½Ç»ó µ¿ÀÏÇÑ Á¤µµÀÇ ÆÛÆ÷¸Õ½º¸¦ º¸ÁõÇÕ´Ï´Ù. ¿À¹öÇìµå°¡ µÇ´Â °ÍÀº, Ŭ·¡½ºÀÇ ÇÁ·ÓÆÛƼ¸¦ ÃëµæÇÒ ¶§ÀÇ ÂüÁ¶ÀÇ ÇØ°á¸¸ÀÔ´Ï´Ù.

26.3.3. ¸Þ¸ð¸® ÄÁÅ×À̳ÊÀÇ 'value' ÇÁ·ÓÆÛƼ

(À̵¿ °¡´ÉÇÑ, ȤÀº ¶ô µÇ¾ú´Ù) ¸Þ¸ð¸® ÄÁÅ×À̳ÊÀÇ 'value' ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇϰí, Memory ObjectsÀÇ µ¥ÀÌÅ͸¦ Ãë±ÞÇÕ´Ï´Ù.


<?php
$memObject 
$memoryManager->create($data);

echo 
$memObject->value;

$memObject->value $newValue;

$memObject->value[$index] = '_';

echo 
ord($memObject->value[$index1]);

$memObject->value substr($memObject->value$start$length);

Memory ObjectsÀÇ µ¥ÀÌÅÍ¿¡ ¾×¼¼½º ÇÏ´Â ¶Ç ÇϳªÀÇ ¹æ¹ýÀ¸·Î¼­ getRef() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÀÖ½À´Ï´Ù.PHP ÀÇ ¹öÁ¯ÀÌ 5.2 º¸´Ù ³°Àº °æ¿ì´Â, ¹Ýµå½Ã ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÆÛÆ÷¸Õ½ºÀÇ ¹®Á¦·ÎºÎÅÍ, ±× ¿ÜÀÇ °æ¿ì¿¡µµ À̰ÍÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â °ÍÀÌ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù.

26.3.4. ¸Þ¸ð¸® ÄÁÅ×À̳ÊÀÇ ÀÎÅÍÆäÀ̽º

¸Þ¸ð¸® ÄÁÅ×À̳ʴÂ, ÀÌÇÏÀÇ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù.

26.3.4.1. getRef() ¸Þ¼Òµå


<?php
public function &getRef();

getRef() ¸Þ¼Òµå´Â, ¿ÀºêÁ§Æ®ÀÇ °ª¿¡ÀÇ ÂüÁ¶¸¦ µ¹·ÁÁÝ´Ï´Ù.

À̵¿ °¡´ÉÇÑ ¿ÀºêÁ§Æ®´Â, ¸¸¾à ¸Þ¸ð¸®³»¿¡ ¾øÀ¸¸é ÀÌ ½ÃÁ¡¿¡¼­ ij½¬·ÎºÎÅÍ ÀÐÈü´Ï´Ù. ¿ÀºêÁ§Æ®¸¦ ij½¬·ÎºÎÅÍ Àоîµé¿´À» °æ¿ì¿¡, ¸Þ¸ð¸®³»¿¡¼­ °ü¸®Çϰí ÀÖ´Â ¿ÀºêÁ§Æ®ÀÇ »çÀÌÁî°¡ Á¦ÇÑ¿¡ À̸£¸é, ´Ù¸¥ ¿ÀºêÁ§Æ®ÀÇ ½º¿ÒÀÌ ¹ß»ýÇÕ´Ï´Ù.

PHP ÀÇ ¹öÁ¯ÀÌ 5.2 º¸´Ù ³°Àº °æ¿ì, Memory ObjectsÀÇ µ¥ÀÌÅÍ¿¡ ¾×¼¼½º ÇÏ·Á¸é ¹Ýµå½Ã getRef() ¸Þ¼Òµå¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍÀÇ º¯°æ ³»¿ëÀ» µÚÂÑÀ¸·Á¸é , ¿©ºÐÀÇ ÀÚ¿øÀÌ ÇÊ¿äÇÕ´Ï´Ù. getRef() ¸Þ¼Òµå´Â ¹®ÀÚ¿­¿¡ÀÇ ÂüÁ¶¸¦ µ¹·ÁÁÖ¾î, À̰ÍÀº ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ Á÷Á¢ º¯°æÇÏ°Ô µË´Ï´Ù. Áï, µ¥ÀÌÅÍÀÇ ³»¿ëÀ» ó¸®ÇÒ ¶§ getRef() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´É¼÷ÇÑ ¹æ½ÄÀÌ µË´Ï´Ù.


<?php
$memObject 
$memoryManager->create($data);

$value = &$memObject->getRef();

for (
$count 0$count strlen($value); $count++) {
    
$char $value[$count];
    ...
}

26.3.4.2. touch() ¸Þ¼Òµå


<?php
public function touch();

touch() ¸Þ¼Òµå´Â getRef() (¿Í)°ú °°ÀÌ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. À̰ÍÀº, ¿ÀºêÁ§Æ®ÀÇ °ªÀÌ º¯°æµÈ °ÍÀ» ÅëÁöÇÕ´Ï´Ù.


<?php
$memObject 
$memoryManager->create($data);
...

$value = &$memObject->getRef();

for (
$count 0$count strlen($value); $count++) {
    ...
    if (
$condition) {
        
$value[$count] = $char;
    }
    ...
}

$memObject->touch();

26.3.4.3. lock() ¸Þ¼Òµå


<?php
public function lock();

lock() ¸Þ¼Òµå´Â, ¿ÀºêÁ§Æ®¸¦ ¸Þ¸ð¸®³»¿¡ Àá±Þ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϰí, ½º¿Ò ÇÏ°í ½ÍÁö ¾ÊÀº ¿ÀºêÁ§Æ®¸¦ ¼±ÅÃÇÕ´Ï´Ù. Åë»óÀº À̰ÍÀº ºÒÇÊ¿äÇÕ´Ï´Ù.¿Ö³ÄÇϸé, MS-DOS¸Þ¸ð¸® °ü¸® ÇÁ·Î±×·¥ ÀÌ ´É¼÷ÇÑ »óÅ·Π½º¿Ò ÇÏ´Â È常¦ ¼±ÅÃÇϵµ·Ï(µíÀÌ) µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯³ª, ¾Æ¹«·¡µµ ½º¿Ò ÇØ¼­´Â ¾È µÇ´Â ¿ÀºêÁ§Æ®°¡ ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ°í ÀÖ´Â °æ¿ì´Â, ±×°ÍÀ» Àá±×¸é ÁÁÀ» °ÍÀÔ´Ï´Ù.

¿ÀºêÁ§Æ®¸¦ ¸Þ¸ð¸®³»¿¡ Àá±×´Â °ÍÀ¸·Î, ¶ôÀ» ÇØÁ¦ÇÒ ¶§±îÁö´Â getRef() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ÂüÁ¶°¡ À¯È¿ÇÏ´Ù¶ó°í ÇÏ´Â °ÍÀÌ º¸ÁõµË´Ï´Ù.


<?php
$memObject1 
$memoryManager->create($data1);
$memObject2 $memoryManager->create($data2);
...

$memObject1->lock();
$memObject2->lock();

$value1 = &$memObject1->getRef();
$value2 = &$memObject2->getRef();

for (
$count 0$count strlen($value2); $count++) {
    
$value1 .= $value2[$count];
}

$memObject1->touch();
$memObject1->unlock();
$memObject2->unlock();

26.3.4.4. unlock() ¸Þ¼Òµå


<?php
public function unlock();

unlock() ¸Þ¼Òµå´Â, ¶ôÀÌ ºÒÇÊ¿äÇØÁø ¿ÀºêÁ§Æ®ÀÇ ¶ôÀ» ÇØÁ¦ÇÕ´Ï´Ù. À§ÀÇ ¿¹¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

26.3.4.5. isLocked() ¸Þ¼Òµå


<?php
public function isLocked();

isLocked() ¸Þ¼Òµå¸¦ »ç¿ëÇϰí, ¿ÀºêÁ§Æ®°¡ ¶ô µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. ¿ÀºêÁ§Æ®°¡ ¶ô µÇ°í ÀÖ´Â °æ¿ì´Â true, ¶ô µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â false (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. "¶ô µÇ°í ÀÖ´Ù" ¿ÀºêÁ§Æ®¿¡ ´ëÇØ¼­´Â, À̰ÍÀº Ç×»ó true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.¶Ç "À̵¿ °¡´ÉÇÑ" ¿ÀºêÁ§Æ®ÀÇ °æ¿ì´Â true ȤÀº false ÀÇ ¾î´ÀÂÊÀ̵çÀ» µ¹·ÁÁÝ´Ï´Ù.