ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î

php·Î À¥»óÀÇ ÆÄÀÏ Àбâ(html ¼Ò½º Àбâ)
10³â Àü
ÀÌ ±ÛÀº http://www.php-mysql-tutorial.com/wikis/php-tutorial/reading-a-remote-file-using-php.aspx  ¿¡ ÀÖ´Â ±ÛÀ» ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù

——————————————————–

php·Î À¥»ó(¿ø°Ý)¿¡ ÀÖ´Â ÆÄÀÏÀ» Àд ¹æ¹ýÀ¸·Î´Â ¾Æ·¡ÀÇ 4°¡Áö°¡ °¡´ÉÇÏ´Ù

1. fopen() ÇÔ¼ö »ç¿ë

2. file_get_contents() ÇÔ¼ö »ç¿ë

3. CURL

4. php ¼ÒÄÏ ÇÔ¼ö¸¦ È°¿ëÇÏ¿© Á÷Á¢ °¡Á®¿À´Â ¹ý



1¹ø°ú 2¹ø ¹æ¹ýÀ» »ç¿ëÇϱâ À§Çؼ­´Â fopen wrapper °¡ »ç¿ë°¡´ÉÇؾßÇÑ´Ù. ÀÌ fopen wrapper ÆĶó¹ÌÅÍ´Â php.ini¿¡ Á¤ÀǵǾî ÀÖÀ¸³ª, ini_set()À» »ç¿ëÇؼ­ ½ÇÇà½Ã°£¿¡ ¹Ù²Ü¼ö´Â ¾ø´Ù.

ÀÌ µÎ ¹æ¹ýÀ» ¾µ¼ö ÀÖ´ÂÁöÀÇ ¿©ºÎ´Â ¾Æ·¡ ÄÚµå·Î È®ÀÎÇÒ¼ö ÀÖ´Ù
if (ini_get('allow_url_fopen') == '1') {
   // fopen() À̳ª file_get_contents() »ç¿ë
} else {
   // curl À̳ª ÇÔ¼ö Á÷Á¢ ÀÛ¼º
}


1. fopen() ÇÔ¼ö »ç¿ë

fopen()À» »ç¿ëÇÏ´Â ¹ýÀº local ÆÄÀÏÀ» ÀÐ´Â°Í ¸¸Å­ ½±´Ù. À¯ÀÏÇÏ°Ô ´Ù¸¥Á¡Àº fopen()ÇÔ¼ö ³»¿¡ ÆÄÀÏ¸í ´ë½Å URLÀ» Àû´Â´Ù´Â °ÍÀÌ´Ù

¾Æ·¡ ¿¹Á¦¸¦ º¸ÀÚ
// ¿ø°Ý ÆÄÀÏÀ» »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀ¸·Î open µÇ¾ú´ÂÁö È®ÀÎ
if ($fp = fopen('http://www.google.com/', 'r')) {
   $content = '';
   // ÀüºÎ ÀÐÀ»¶§±îÁö °è¼Ó ÀÐÀ½
   while ($line = fread($fp, 1024)) {
      $content .= $line;
   }

   // content »ç¿ë
   // ...
} else {
   // ÆÄÀÏ open½Ã ¿¡·¯ ¹ß»ý
}

À§ ÄÚµåÁß while ¹Ýº¹¹®ÀÇ fread() ÇÔ¼ö´Â ÇÑ ·çÇÁ ¾È¿¡¼­ 1024 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ Àбâ À§ÇØ »ç¿ëµÈ´Ù. ÀÌ ÄÚµå´Â ¾Æ·¡¿Í °°ÀÌ ¾µ¼öµµ ÀÖ´Ù
// ¿ø°Ý ÆÄÀÏÀ» »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀ¸·Î open µÇ¾ú´ÂÁö È®ÀÎ
if ($fp = fopen('http://www.google.com/', 'r')) {
   $content = '';
   // ÀüºÎ ÀÐÀ»¶§±îÁö °è¼Ó ÀÐÀ½
   while ($line = fgets($fp, 1024)) {
      $content .= $line;
   }

   // content »ç¿ë
   // ...
} else {
   // ÆÄÀÏ open½Ã ¿¡·¯ ¹ß»ý
}

fread() ´ë½Å¿¡ ÃÖ´ë 1024¹ÙÀÌÆ®ÀÇ ¶óÀÎ ÇÑÁÙÀ» Àд fgets()¸¦ »ç¿ëÇß´Ù. ù¹ø° Äڵ尡 µÎ¹ø°º¸´Ù Á»´õ ¼±È£µÇ´Â ¹æ½ÄÀÌ´Ù

¿ø°Ý¿¡ ÀÖ´Â ÆÄÀÏÀÌ 300Á٠¥¸® 50KB ÆÄÀÏÀ̶ó°í »ý°¢Çغ¸¸é, ù¹ø° ÄÚµå´Â ·çÇÁ°¡ 15¹ø Á¤µµ µ¹Å×Áö¸¸ µÎ¹ø° ÄÚµå´Â 300¹øÀÇ ·çÇÁ°¡ ½ÇÇàµÇ¾ß ÇÑ´Ù

¸¸¾à ÇÔ¼öÈ£Ãâ ºñ¿ë°ú ½Ã°£À» °í·ÁÁßÀ̶ó¸é ù¹ø° ¹æ¹ýÀÌ È®½ÇÈ÷ ³ªÀº ¹æ¹ýÀÌ´Ù



2. file_get_contents() ÇÔ¼ö »ç¿ë

°¡Àå °£´ÜÇؼ­ ³»°¡ °¡Àå ¼±È£ÇÏ´Â ¹æ¹ýÀÌ´Ù. ´ÜÁö ÆĶó¸ÞÅ͸¦ url·Î ÁÖ°í ÇÔ¼ö¸¦ È£ÃâÇϱ⸸ ÇÏ¸é µÈ´Ù. ÇÑ°¡Áö ±â¾ïÇؾßÇÒ Á¡Àº ¸®ÅϹÞÀº °ªÀ» »ç¿ëÇϱâ Àü¿¡ error°¡ ¸®ÅÏ 됬´ÂÁö È®ÀÎ ¸ÕÀú ÇؾßÇÑ´Ù´Â °Í.
$content = file_get_contents('http://www.google.com/');
if ($content !== false) {
   // content »ç¿ë
} else {
   // error ¹ß»ý
}

3. CURL

À§ÀÇ µÎ ¹æ¹ý°ú´Â ´Ù¸£°Ô CURLÀ» ¾²´Â ¹æ¹ýÀº µü ºÎ·¯Áö°Ô ¼³¸íÇϱâ Èûµé´Ù. ÀÌ ¶óÀ̺귯¸®´Â (http»Ó¸¸ ¾Æ´Ï¶ó) ´Ù¸¥ ÇÁ·ÎÅäÄÝ °£ÀÇ ¿¬°á°ú Åë½ÅÇÏ´Â µ¥¿¡ ¸Å¿ì À¯¿ëÇϱ⠾²À̱ä ÇÏÁö¸¸ ¹è¿ì´Âµ¥ ½Ã°£À» Á» µé¿©¾ß ÇÑ´Ù. ¶Ç´Ù¸¥ ¹®Á¦´Â ¸ðµç web host µéÀÌ ÀÌ php ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏÁö´Â ¾Ê¾Ò´Ù´Â°Í. µû¶ó¼­ ÀÌ ¹æ¹ýÀ» ¾²±â Àü¿¡ ÇØ´ç ¶óÀ̺귯¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¸ÕÀú È®ÀÎ ÇؾßÇÑ´Ù

´ÙÀ½Àº ¿ø°Ý ÆÄÀÏÀ» ¿©´Â °£´ÜÇÑ ¿¹Á¦
// curlÀÌ ¼³Ä¡ µÇ¾ú´ÂÁö È®ÀÎ
if (function_exists('curl_init')) {
   // curl ¸®¼Ò½º¸¦ ÃʱâÈ­
   $ch = curl_init();

   // urlÀ» ¼³Á¤
   curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');

   // Çì´õ´Â Á¦¿ÜÇÏ°í content ¸¸ ¹ÞÀ½
   curl_setopt($ch, CURLOPT_HEADER, 0);

   // ÀÀ´ä °ªÀ» ºê¶ó¿ìÀú¿¡ Ç¥½ÃÇÏÁö ¸»°í °ªÀ» ¸®ÅÏ
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   // ºê¶ó¿ìÀúó·³ º¸À̱â À§ÇØ user agent »ç¿ë
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');

   $content = curl_exec($ch);

   // ¸®¼Ò½º ÇØÁ¦¸¦ À§ÇØ ¼¼¼Ç ¿¬°á ´ÝÀ½
   curl_close($ch);
} else {
   // curl ¶óÀ̺귯¸®°¡ ¼³Ä¡ µÇÁö ¾ÊÀ½. ´Ù¸¥ ¹æ¹ý ¾Ë¾Æº¼ °Í
}

¸î°¡Áö °æ¿ì¿¡´Â file_get_contents()³ª fopen() À» ¾²´Â°Íº¸´Ù CURLÀÌ ´õ ºü¸£´Ù. ÀÌ°ÍÀº CURLÀÌ ±âº»ÀûÀ¸·Î ¾ÐÃà ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù (¿¹¸¦µé¸é gzip).

Å©°í ÀÛÀº ¸¹Àº »çÀÌÆ®¿¡¼­ bandwidth¸¦ ÁÙÀ̱â À§ÇØ ±×µé ÆäÀÌÁö¿¡¼­ gzip ¾ÐÃàÀ» »ç¿ëÇÑ´Ù. ÀÌ »çÀÌÆ®µµ gzip ¾ÐÃàÀ» »ç¿ëÇß°í, bandwidth°¡ Àý¹ÝÀ¸·Î ÁÙ¾ú´Ù. ¸¸¾à ±â´Ù¸®±â ½È¾îÇϴ ŸÀÔÀ̶ó¸é CURLÀÌ °¡Àå Àû´çÇÒ°ÍÀÌ´Ù



4. ÇÔ¼ö Á÷Á¢ ÀÛ¼º

ÃÖ¾ÇÀÇ °æ¿ì¿¡´Â ¼­¹öÀÇ fopen wrapper ¿É¼Çµµ ²¨Á®ÀÖ°í, CURL ¶óÀ̺귯¸®µµ ÀνºÅç µÇÁö ¾Ê¾ÒÀ»¼öµµ ÀÖ´Ù. ÀÌ ½½Ç »óȲ¿¡¼­´Â ¿ì¸®°¡ ¾µ ÇÔ¼ö¸¦ Á÷Á¢ ¸¸µé¾î¾ß ÇÑ´Ù.

¿ì¸®ÀÇ ÇÔ¼ö´Â ´ë»ó ÆÄÀÏÀÇ url ÆĶó¹ÌÅÍ ÇÑ°³¸¦ °®´Â getRemoteFile() ÇÔ¼ö·Î ¸í¸íÇß´Ù. ´ë·«ÀûÀÎ »À´ë´Â ¾Æ·¡¿Í °°´Ù
function getRemoteFile($url)
{
   // 1. host name°ú url path °ªÀ» ȹµæ

   // 2. ¿ø°Ý ¼­¹ö¿¡ Á¢¼Ó

   // 3. ÆÄÀÏÀ» ¾ò±âÀ§ÇØ ÇÊ¿äÇÑ Çì´õµéÀ» Àü¼Û

   // 4. ¿ø°Ý ¼­¹ö·ÎºÎÅÍ ÀÀ´ä ¹ÞÀ½

   // 5. header ºÎºÐ °È¾î³¿

   // 6. ÆÄÀÏ content ¸®ÅÏ
}

url¿¡¼­ host name°ú url path ¸¦ ÃßÃâÇϱâÀ§Çؼ­´Â parse_url() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. ÀÌ  ÇÔ¼ö¿¡ ³Ñ°ÜÁø urlÀº ´ÙÀ½ Ç׸ñµé·Î ºÐ¸®µÉ °ÍÀÌ´Ù
•scheme
•host
•port
•user
•pass
•path
•query
•fragment



¿¹¸¦µé¸é, http://www.php-mysql-tutorial.com/somepage.php Àº ¾Æ·¡¿Í °°ÀÌ ¸®ÅϵȴÙ
Array
(
    [scheme] => http
    [host] => www.php-mysql-tutorial.com
    [path] => /somepage.php
)

¸¸¾à http://myusername:mypassword@www.php-mysql-tutorial.com/somepage.php?q=whatsthis#ouch ¶ó¸é ¾Æ·¡¿Í °°ÀÌ ¸®ÅϵȴÙ
Array
(
    [scheme] => http
    [host] => www.php-mysql-tutorial.com
    [user] => myusername
    [pass] => mypassword
    [path] => /somepage.php
    [query] => q=whatsthis
    [fragment] => ouch
)

¿ì¸®°¡ °ü½ÉÀִ°ÍÀº host, port, path, query °ª »ÓÀÌ´Ù

¿ø°Ý ¼­¹ö¿ÍÀÇ connectionÀ» »ý¼ºÇϱâ´Â À§Çؼ­ fsockopen()À» »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö´Â [hostname, port number, error number Æ÷ÀÎÅÍ, error message Æ÷ÀÎÅÍ, ½Ã°£Á¦ÇÑ] 5°³ÀÇ ÀÎÀÚ¸¦ °¡Áö°í ÀÖ´Ù
function getRemoteFile($url)
{
   // host name °ú url path °ªÀ» ȹµæ
   $parsedUrl = parse_url($url);
   $host = $parsedUrl['host'];
   if (isset($parsedUrl['path'])) {
      $path = $parsedUrl['path'];
   } else {
      // urlÀÌ http://www.mysite.com °°Àº Çü½ÄÀ̶ó¸é
      $path = '/';
   }

   if (isset($parsedUrl['query'])) {
      $path .= '?' . $parsedUrl['query'];
   }

   if (isset($parsedUrl['port'])) {
      $port = $parsedUrl['port'];
   } else {
      // ´ëºÎºÐÀÇ »çÀÌÆ®µéÀº 80Æ÷Æ®¸¦ »ç¿ë
      $port = '80';
   }

   $timeout = 10;
   $response = '';
   // ¿ø°Ý ¼­¹ö¿¡ Á¢¼ÓÇÑ´Ù
   $fp = @fsockopen($host, $port, $errno, $errstr, $timeout );

   if( !$fp ) {
      echo "Cannot retrieve $url";
   } else {
      // ÇÊ¿äÇÑ Çì´õµé Àü¼Û
      fputs($fp, "GET $path HTTP/1.0\r\n" .
                 "Host: $host\r\n" .
                 "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\r\n" .
                 "Accept: */*\r\n" .
                 "Accept-Language: en-us,en;q=0.5\r\n" .
                 "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
                 "Keep-Alive: 300\r\n" .
                 "Connection: keep-alive\r\n" .
                 "Referer: http://$host\r\n\r\n");

      // ¿ø°Ý ¼­¹ö·ÎºÎÅÍ response ¹ÞÀ½
      while ( $line = fread( $fp, 4096 ) ) {
         $response .= $line;
      }

      fclose( $fp );

      // header ºÎºÐ °È¾î³¿
      $pos      = strpos($response, "\r\n\r\n");
      $response = substr($response, $pos + 4);
   }

   // ÆÄÀÏÀÇ content ¸®ÅÏ
   return $response;
}

À§ÀÇ Äڵ忡¼­´Â 9ÁÙÀÇ Çì´õ Á¤º¸¸¦ º¸³»Áö¸¸ »ç½Ç óÀ½ 2ÁÙ¸¸ Çʼö»çÇ×ÀÌ´Ù. µû¶ó¼­ ÀÌ·¸°Ô¸¸ º¸³»µµ µÈ´Ù
fputs($fp, "GET $path HTTP/1.0\r\n" .
           "Host: $host\r\n\r\n");

¾Æ¸¶ Àßµ¿ÀÛÇÒ°ÍÀÌ´Ù. ÇÏÁö¸¸ Ç×»ó Àß µ¿ÀÛÇϴ°ÍÀº ¾Æ´Ï´Ù. ¿­°íÀÚ ÇÏ´Â ÆÄÀϵéÀº ¿ø°Ý ¼­¹ö¿¡ ÀúÀåµÇ¾î Àֱ⶧¹®¿¡, ¿ø°Ý ¼­¹ö°¡ request¿¡ response ÇÏ´ÂÁö ¾ÈÇÏ´ÂÁö¿¡ ´Þ·ÁÀÖ´Ù

¸î¸î ¼­¹ö´Â request Çì´õ¿¡ referer Ç׸ñÀÌ ¾ø´Ù¸é block ÇÒ°ÍÀÌ°í, ¸î¸îÀº ƯÁ¤ user agent ¸¸ ¹Þ¾ÆµéÀÏ °ÍÀÌ´Ù. ¶Ç ¾î¶² °ÍµéÀº cookie°¡ ¼³Á¤µÇ¾î ÀÖ´Â header¸¸ ¹ÞÀ» °ÍÀÌ´Ù

ƯÁ¤ ¿ø°Ý ÆÄÀÏÀ» ¿©´Âµ¥¿¡ ¾î¶² Çì´õ°¡ º¸³»Á®¾ß ÇÏ´ÂÁö ¾Ë°í ½Í´Ù¸é ÆÄÀ̾îÆø½º¿Í  live http headers plugin ÅøÀ» »ç¿ëÇØ º¸¶ó. ÀÛ°í °­ÇÑ ÅøÀÌ´Ù
ÃßõÃßõ : 426 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,885
input ÀÔ·Â ÇÊµå ¾ÕµÚ °ø¹é ½Ç½Ã°£ Á¦°Å
2,884
Placeholder Æ÷Ä¿½º½Ã °¨Ãß±â
2,883
MySQL Áߺ¹µÈ µ¥ÀÌÅ͸¦ »èÁ¦
2,882
MySQL Áߺ¹ µ¥ÀÌÅÍ È®ÀÎ
2,881
sessionStorage.getItem ¿Í sessionStorage.setItem
2,880
Á¦ÀÌÄõ¸® ·£´ýÀ¸·Î ¹è°æ»ö º¯°æ
2,879
preg match¿¡ °üÇÑ Á¤±Ô½Ä
2,878
Stream an audio file with MediaPlayer ¿Àµð¿À ÆÄÀÏ ½ºÆ®¸®¹Ö Çϱâ
2,877
Audio Streaming PHP Code
2,876
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
2,875
Vimeo (ºñ¸Þ¿À) API ¸¦ »ç¿ëÇÏ¿© Ç÷¹À̾î ÄÁÆ®·ÑÇϱâ
2,874
iframe »ç¿ë½Ã ÇÏ´Ü¿¡ ¹ß»ýÇÏ´Â °ø¹é Á¦°Å¹æ¹ý
2,873
¾ÆÀÌÇÁ·¹ÀÓ(iframe) Àüüȭ¸é °¡´ÉÇÏ°Ô Çϱâ
2,872
ºÎÆ®½ºÆ®·¦(bootstrapk)¿¡¼­ »ç¿ëÇÏ´Â class¸í Á¤¸®
2,871
ºÎÆ®½ºÆ®·¦ CSS
2,870
Å©·Ò¿¡¼­ ¸¶Áø Á¶Àý
2,869
PHP ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀθíÀ̳ª urlµîÀÇ Á¤º¸ ¾Ë¾Æ¿À±â
2,868
PHP preg match all()
2,867
PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
2,866
[PHP] ¿ø°ÝÁö ÆÄÀÏ ÁÖ¼Ò ³ëÃâ ¾ÈÇÏ°í curl·Î ´Ù¿î·Îµå ¹Þ±â
2,865
PHP ÇÔ¼ö Á¤¸®
2,864
¾ÆÀÌÇÁ·¹ÀÓ(iframe) ºñÀ² À¯ÁöÇϸ鼭 Å©±â Á¶ÀýÇÏ´Â ¹æ¹ý
2,863
PHP ¹è¿­¿¡¼­ ¹«ÀÛÀ§·Î Çϳª »Ì¾ÆÁÖ´Â array rand() ÇÔ¼ö
2,862
PHP Á¤±Ô½Ä Á¤¸®
2,861
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
2,860
php Å©·Ñ¸µ ¶Ç´Â ÆÄ½Ì ÇÔ¼ö, Á¤±Ô½Ä ¸ðÀ½
2,859
Á¦ÀÌÄõ¸® ±âº» ¸í·É¾î
2,858
À¥ÆäÀÌÁö °¡·Î ¸ðµå¼¼·Î ¸ðµå ÀνÄÇϱâ
2,857
¸ð¹ÙÀÏ À¥ È­¸é °­Á¦ ȸÀü(°¡·Î¸ðµå °íÁ¤)
2,856
[HTML5]¿¡¼­ frameset ´ëü ¹æ¹ý°ú iframe ¼Ó¼º
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.