<?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>@blog.justoneplanet.info &#187; ストリーム</title>
	<atom:link href="http://blog.justoneplanet.info/category/computer-language/php/stream/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.justoneplanet.info</link>
	<description>日々勉強</description>
	<lastBuildDate>Wed, 08 Feb 2012 02:57:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP Accessing Network Resources（ネットワークアクセス）</title>
		<link>http://blog.justoneplanet.info/2009/05/27/php-accessing-network-resources%ef%bc%88%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/</link>
		<comments>http://blog.justoneplanet.info/2009/05/27/php-accessing-network-resources%ef%bc%88%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/#comments</comments>
		<pubDate>Wed, 27 May 2009 14:14:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ストリーム]]></category>

		<guid isPermaLink="false">http://blog.justoneplanet.info/?p=1322</guid>
		<description><![CDATA[■ファイルアクセスの同じ手法 以下のようにfopen関数を用いてファイルアクセスと同じように、ネットワークリソースを利用できる。但し、当然ながらhttpを使っているので書き込みなどは行えない。 &#60;?php $dat [...]]]></description>
			<content:encoded><![CDATA[<h3>■ファイルアクセスの同じ手法</h3>
<p>以下のようにfopen関数を用いてファイルアクセスと同じように、ネットワークリソースを利用できる。但し、当然ながらhttpを使っているので書き込みなどは行えない。</p>
<pre class="brush: php;">
&lt;?php
$data = '';
if($fh = fopen('http://google.com', 'r')){
    while($str = fread($fh, 1000)){
        $data .= $str;
    }
}
else{
    //error
}
print($data);
?&gt;
</pre>
<p>以下のようにして外部のファイルをインクルードすることもできる。但し、JavaScriptなどではお馴染みの手法もPHPでは大きなリスクを伴うことを理解する必要がある。</p>
<pre class="brush: php;">
&lt;?php
require_once('http://sample.org');
?&gt;
</pre>
<h3>■ストリームコンテキスト</h3>
<p>以下のようにstream_context_create関数を使って、特定の関数を使用したときに任意の（HTTP）ヘッダを使うよう指定することができる。</p>
<pre class="brush: php;">
&lt;?php
$strmtxt = stream_context_create(array(
    'http' =&gt; array(
        'user_agent' =&gt; 'Super Browser Like FF',
        'max_redirects' =&gt; 3
    )
));
$data = file_get_contents('http://localhost', false, $strmtxt);
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>string <strong>file_get_contents</strong>(string $filename[, bool $use_include_path=false[, resource $context[, int $offset=-1[, int $maxlength=-1]]]])</dt>
<dd>$filenameのファイルを文字列として全て読み込む。$use_include_pathをtrueにするとインクルードパスから検索してくれる。第三引数にストリームコンテキストを用いて通信の挙動を指定できる。</dd>
<dt>resource <strong>stream_context_create</strong>([array $options])</dt>
<dd>ストリームコンテキストを生成する。引数は$array['wrapper']['option'] = $valueのような連想配列でなければならない。</dd>
</dl>
</div>
<h3>■ソケット接続</h3>
<p>以下のようにしてホスト間のソケット接続を確立する。</p>
<h4>サーバ側</h4>
<pre class="brush: php;">
&lt;?php
$socket = stream_socket_server('tcp://0.0.0.0:1037');
while($conn = stream_socket_accept($socket)){
    fwrite($conn, &quot;Hello, World!n&quot;);
    fclose($conn);
}
fclose($socket);
?&gt;
</pre>
<pre class="brush: bash;">
php ./server.php &amp;
</pre>
<h4>クライアント側</h4>
<pre class="brush: php;">
&lt;?php
$socket = stream_socket_client('tcp://0.0.0.0:1037');
while(!feof($socket)){
    print(fread($socket, 100));
}
fclose($socket);
?&gt;
</pre>
<pre class="brush: bash;">
php ./client.php
#Hello, World!
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>resource <strong>stream_socket_client</strong>(string $remote_socket)</dt>
<dd>インターネットドメインもしくはUNIXドメインのソケット接続を開く。</dd>
<dt>resource <strong>stream_socket_server</strong>(string $local_socket)</dt>
<dd>インターネットドメインもしくはUNIXドメインのサーバソケットを生成する。</dd>
<dt>resource <strong>stream_socket_accept</strong>(resource $server_socket)</dt>
<dd>サーバソケットの接続を受け入れる。</dd>
</dl>
</div>
<h3>■ストリームフィルタ</h3>
<p>以下のようにstream_filter_append関数を使用してストリームフィルタを付加する。フィルタ「string.toupper」は「全ての文字を大文字」にし、「zlib.inflate」は「データの圧縮」をする。</p>
<pre class="brush: php;">
&lt;?php
$socket = stream_socket_server('tcp://0.0.0.0:1037');
while($conn = stream_socket_accept($socket)){
    stream_filter_append($conn, 'string.toupper');
    stream_filter_append($conn, 'zlib.deflate');
    fwrite($conn, &quot;Hello, World!n&quot;);
    fclose($conn);
}
fclose($socket);
?&gt;
</pre>
<pre class="brush: php;">
&lt;?php
$socket = stream_socket_client('tcp://0.0.0.0:1037');
stream_filter_append($socket, 'zlib.inflate');
while(!feof($socket)){
    print(fread($socket, 100));
}
fclose($socket);
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>resource <strong>stream_filter_append</strong>(resource $stream, string $filtername)</dt>
<dd>第一引数で指定したストリームに、第二引数のフィルタを末尾に付加する。</dd>
<dt>resource <strong>stream_filter_prepend</strong>(resource $stream, string $filtername)</dt>
<dd>第一引数で指定したストリームに、第二引数のフィルタを先頭に付加する。</dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.justoneplanet.info/2009/05/27/php-accessing-network-resources%ef%bc%88%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Controlling Directories and Files（ディレクトリとファイルの操作）</title>
		<link>http://blog.justoneplanet.info/2009/05/27/php-controlling-directories-and-files%ef%bc%88%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%a8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e6%93%8d%e4%bd%9c%ef%bc%89/</link>
		<comments>http://blog.justoneplanet.info/2009/05/27/php-controlling-directories-and-files%ef%bc%88%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%a8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e6%93%8d%e4%bd%9c%ef%bc%89/#comments</comments>
		<pubDate>Wed, 27 May 2009 05:01:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ストリーム]]></category>

		<guid isPermaLink="false">http://blog.justoneplanet.info/?p=1314</guid>
		<description><![CDATA[■ディレクトリの操作 通常はあまり使用しないが、以下のようにchdir関数を使って、インタープリタのワーキングディレクトリを変更することができる。 &#60;?php if(chdir('/usr/bin')){ //co [...]]]></description>
			<content:encoded><![CDATA[<h3>■ディレクトリの操作</h3>
<p>通常はあまり使用しないが、以下のようにchdir関数を使って、インタープリタのワーキングディレクトリを変更することができる。</p>
<pre class="brush: php;">
&lt;?php
if(chdir('/usr/bin')){
    //code
}
print(getcwd());//'usr/bin'
?&gt;
</pre>
<p>また、ディレクトリを作りたい場合は、以下のようにmkdir関数を用いる。</p>
<pre class="brush: php;">
&lt;?php
if(!mkdir('/usr/bin/test', 0777, true)){
    //code
    print('failed to make a directory.');
}
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>bool <strong>chdir</strong>(string $dirname)</dt>
<dd>アクセス権が無かったり、ディレクトリそのものが無かったりするとfalseを返す。</dd>
<dt>string <strong>getcwd</strong>(void)</dt>
<dd>カレントワーキングディレクトリを文字列で返す。</dd>
<dt>bool <strong>mkdir</strong>(string $dirname[, int $mode=0777[, bool $recursive=false]])</dt>
<dd>$dirnameのディレクトリをアクセス権$modeで生成する。ディレクトリを生成する場所の親ディレクトリが存在しない場合は失敗し「false」を返す。但し、第三引数で「true」が設定されていた場合は、親ディレクトリも生成される。</dd>
</dl>
</div>
<h3>■ファイルアクセスの操作</h3>
<p>対象文字列がディレクトリかファイルを調べるには以下のような関数を用いる。</p>
<pre class="brush: php;">
&lt;?php
if(is_dir('/usr/bin')){
    //code
}
if(is_file('/usr/bin/test.txt')){
    //code
}
?&gt;
</pre>
<p>対象ファイルがPHPからどのような状態にあるか調べるには以下のような関数を使用する。但し、ファイルへのアクセスはシステムのボトルネックとなり得るため、実行結果はキャッシュされ、再度同じ関数をコールするとキャッシュから結果が返る。従って、アクセス権変更後に正しい値を返す必要がある場合は、clearstatcache関数をコールする必要がある。</p>
<pre class="brush: php;">
&lt;?php
$file = 'count.txt';
if(is_executable($file)){
    //code
}
if(is_writable($file)){
    //code
}
if(is_readable($file)){
    //code
}
if(is_link($file)){
    //code
}
if(is_uploaded_file($file)){
    //code
}
?&gt;
</pre>
<p>ファイルのアクセス権を設定するには、以下のようにchmod関数を用いる。</p>
<pre class="brush: php;">
&lt;?php
if(chmod('count.txt', 0644)){
    //code
}
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>bool <strong>is_dir</strong>(string $dirname)</dt>
<dd>対象ディレクトリが存在し、ディレクトリであるならば「true」を返す。</dd>
<dt>bool <strong>is_file</strong>(string $filename)</dt>
<dd>対象ファイルが存在し、ファイルであるならば「true」を返す。</dd>
<dt>bool <strong>is_executable</strong>(string $filename)</dt>
<dd>ファイルが実行可能かどうか調べる。</dd>
<dt>bool <strong>is_writable</strong>(string $filename)</dt>
<dd>ファイルが書き込み可能かどうか調べる。</dd>
<dt>bool <strong>is_readable</strong>(string $filename)</dt>
<dd>ファイルが読み込み可能かどうか調べる。</dd>
<dt>bool <strong>is_link</strong>(string $filename)</dt>
<dd>ファイルがシンボリックリンクかどうか調べる。</dd>
<dt>bool <strong>is_uploaded_file</strong>($_FILE[$key]['tmp_name'])</dt>
<dd>引数で指定されたファイルがアップロードされたものかどうか調べる。</dd>
<dt>bool <strong>chmod</strong>(string $filename, int $mode)</dt>
<dd>$filenameのファイルのアクセス権を$mode（8進数）に設定する。</dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.justoneplanet.info/2009/05/27/php-controlling-directories-and-files%ef%bc%88%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%a8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e6%93%8d%e4%bd%9c%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Accessing Files（ファイルへのアクセス）</title>
		<link>http://blog.justoneplanet.info/2009/05/26/php-accessing-files%ef%bc%88%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%b8%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/</link>
		<comments>http://blog.justoneplanet.info/2009/05/26/php-accessing-files%ef%bc%88%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%b8%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/#comments</comments>
		<pubDate>Tue, 26 May 2009 14:16:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ストリーム]]></category>

		<guid isPermaLink="false">http://blog.justoneplanet.info/?p=1302</guid>
		<description><![CDATA[ファイルから読み込みを行うと、読み込みが完了した位置にファイルポインタが移動する。 ■一般的なファイル操作 ファイルを操作するには以下のようにする。まず、fopen関数でファイルをオープンし、flockでファイルをロック [...]]]></description>
			<content:encoded><![CDATA[<p>ファイルから読み込みを行うと、読み込みが完了した位置にファイルポインタが移動する。</p>
<h3>■一般的なファイル操作</h3>
<p>ファイルを操作するには以下のようにする。まず、fopen関数でファイルをオープンし、flockでファイルをロックする。ファイルハンドラを使う場合、ファイルの全てのデータをメモリに読み込むわけではないので。メモリの節約に繋がる。</p>
<pre class="brush: php;">
&lt;?php
$mask = umask(077);
$fh = fopen('count.txt', 'a+');//0600
umask($mask);
if($fh === false){
    die('Failed to open the file.');
}
if(flock($fh, LOCK_EX)){
    if(filesize('count.txt') === 0){
        $counter = 0;
    }
    else{
        $counter = (int) fgets($fh);
    }
    ftruncate($fh, 0);
    $counter ++;
    fwrite($fh, $counter);
}
fclose($fh);
print($counter);
?&gt;
</pre>
<p>但し、fgets関数については注意しなくてはならない。</p>
<pre class="brush: php;">
&lt;?php
print(fgets($fh, 1));
//nothing!!
?&gt;
</pre>
<p>上述のコードを書いてもファイルから文字が読み出されることはない。なぜならば$length-1バイトしか読み込まないためである。従って、以下のように文字数+1の値を記述する必要がある。</p>
<pre class="brush: php;">
&lt;?php
print(fgets($fh, 2));
//1 character is displayed
?&gt;
</pre>
<p>つうかコノ仕様が非常に覚えづらい。他の関数と統一して欲しい。</p>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>resource <strong>fopen</strong>(string $filename, string $mode[, bool $use_inc_path=false[, resource $stream_context]])</dt>
<dd>第一引数で指定したファイルを、第二引数で指定したモードで開く。ファイルがオープンできなかった場合は、falseを返す。</dd>
<dt>bool <strong>flock</strong>(resource $fh, int $mode)</dt>
<dd>第一引数で指定したファイルハンドラのファイルを、第二引数で指定したモードでロックする。</dd>
<dt>int <strong>filesize</strong>(string $filename)</dt>
<dd>引数で指定したファイルのサイズを取得する。この関数の結果はキャッシュされるので、1リクエスト内に何回もコールし、そのたびに正確な値が必要なときは、clearstatcahche関数をコールする。単位はバイト。</dd>
<dt>string <strong>fgets</strong>(resource $fh[, int $length])</dt>
<dd>ファイルポインタから1行データを取得する。$lengthが設定されていた場合は、<strong>$length-1</strong>バイト読み出す。</dd>
<dt>string <strong>fgetc</strong>(resource $fh)</dt>
<dd>ファイルポインタから1文字データを取得する。</dd>
<dt>bool <strong>ftruncate</strong>(resource $fh, int $size)</dt>
<dd>第一引数で指定したファイルハンドラのファイルを、第二引数で指定した値の長さにする。元のファイルの余分な部分はカットされ、足りない場合はヌルバイトで補う。</dd>
<dt>int <strong>fwrite</strong>(resource $fh, string $data)</dt>
<dd>第一引数で指定したファイルポインタのファイルに、第二引数で指定した文字列を書き込む。戻り値は書き込んだバイト数（失敗した場合はfalse）。</dd>
<dt>bool <strong>fclose</strong>(resource $fh)</dt>
<dd>オープンしたファイルハンドラをクローズする。ファイルロックをしていた場合は解除する。</dd>
<dt>int <strong>umask</strong>(int $mask)</dt>
<dd>現在のumaskを設定し古いumaskを返す。ファイルを作成する前に適切な権限でファイルが作成されるように調整するために使う。</dd>
</dl>
<h4>ファイルオープンのモード</h4>
<table>
<tr>
<th>r</th>
<td>読み取り専用（ファイルポインタは先頭）</td>
</tr>
<tr>
<th>r+</th>
<td>読み取り、書き込み専用（ファイルポインタは先頭）</td>
</tr>
<tr>
<th>w</th>
<td>書き込み専用（ファイルポインタは先頭、ファイルサイズを0に）<br />
ファイルが存在しない場合は作成を試みる</td>
</tr>
<tr>
<th>w+</th>
<td>書き込み、読み取り専用（ファイルポインタは先頭、ファイルサイズを0に）<br />
ファイルが存在しない場合は作成を試みる</td>
</tr>
<tr>
<th>a</th>
<td>書き込み専用（ファイルポインタは最後）<br />
ファイルが存在しない場合は作成を試みる</td>
</tr>
<tr>
<th>a+</th>
<td>書き込み、読み取り専用（ファイルポインタは最後）<br />
ファイルが存在しない場合は作成を試みる</td>
</tr>
<tr>
<th>x</th>
<td>書き込み専用でファイルを作る<br />
ファイルが存在する場合はエラーとなる</td>
</tr>
<tr>
<th>x+</th>
<td>読み込み専用でファイルを作る<br />
ファイルが存在する場合はエラーとなる</td>
</tr>
</table>
<h4>ファイルのロックモード</h4>
<table>
<tr>
<th>LOCK_SH</th>
<td>共有ロック</td>
</tr>
<tr>
<th>LOCK_EX</th>
<td>排他ロック</td>
</tr>
</table>
<p>書き込みを行う場合は、排他ロックを使用する。</p>
</div>
<p>また、以下のような方法でファイルの文字を全て読み込むことができる。</p>
<pre class="brush: php;">
&lt;?php
if(file_exists('count.txt')){
    $fh = fopen('count.txt', 'r');
    $txt = '';
    while(!feof($fh)){
        $txt .= fread($fh, 1);
    }
    print($txt);
}
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>bool <strong>file_exists</strong>(string $filename)</dt>
<dd>引数で指定したファイルもしくはディレクトリが存在するか調べる。但し、ファイルが存在しても、PHPの実行ユーザからアクセスできない場合はfalseを返す。</dd>
<dt>bool <strong>feof</strong>(resource $fh)</dt>
<dd>ファイルポインタがファイル末端に達しているか調べる。</dd>
<dt>string <strong>fread</strong>(resource $fh, int $length)</dt>
<dd>第一引数で指定したファイルハンドラのファイルから、第二引数で指定した$lengthバイト数分だけ読み込む。</dd>
</dl>
</div>
<h3>■ファイルポインタの移動</h3>
<pre class="brush: php;">
&lt;?php
$fh = fopen('count.txt', 'r+');
fseek($fh, 2, SEEK_SET);
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>int <strong>fseek</strong>(resource $fh, int $offset[, int $whence])</dt>
<dd>第一引数で指定したファイルハンドラのファイルポインタを、第二引数で指定したバイト数目にセットする。但し、第三引数でSEEK_SETでなく、SEEK_CURを指定した場合は現在の位置からのカウントになり、SEEK_ENDの場合はファイルの末端からカウントする。従って、SEEK_ENDの場合、第二引数は0もしくは負の値となる。</dd>
<dt>int <strong>ftell</strong>(resource $fh)</dt>
<dd>現在のファイルポインタの場所を返す。</dd>
</dl>
</div>
<h3>■csvファイルの操作</h3>
<p>以下のCSVファイルを例に解説する。ちなみに最終行にも改行が必要である。</p>
<pre class="brush: php;">
&quot;Jack&quot;,&quot;54&quot;,&quot;USA&quot;
&quot;Emily&quot;,&quot;18&quot;,&quot;Japan&quot;
</pre>
<p>以下のようにfgetcsv関数を用いてcsvファイルの内容を読み出す。また、fputcsv関数を用いて行を追加する。</p>
<pre class="brush: php;">
&lt;?php
$fh = fopen('member.csv', 'r+');
while($row = fgetcsv($fh)){
    print(&quot;{$row[0]}({$row[1]})-{$row[2]}&quot; . PHP_EOL);
}
$row = array('John', '28', 'Canada');
fputcsv($fh, $row);
/*
Jack(54)-USA
Emily(18)-Japan
John(28)-Canada
*/
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>array <strong>fgetcsv</strong>(resource $handle[, int $length[, string $delimiter[, string $enclosure[, string $escape]]]])</dt>
<dd>第一引数以外はオプションである。デフォルトのデリミターはカンマで、括りはダブルクォーテーションである。</dd>
<dt>int <strong>fputcsv</strong>(resource $handle, array $data[, string $delimiter[, string $enclosure]])</dt>
<dd>第一引数で指定したファイルポインタのファイルに、第三引数以降の引数に基づき、CSV形式の1行分に整形を行った第二引数のデータを書き込む。</dd>
</dl>
</div>
<h3>■簡易化されたファイル操作</h3>
<p>以下のように動画を出力するような場合は、上述の関数を使用するよりもリソースを抑えられる。</p>
<pre class="brush: php;">
&lt;?php
header('Content-type: video/mpeg');
readfile('test.mpg');
?&gt;
</pre>
<p>また、以下のようにfile_get_contents関数を使用すると、ファイルの内容を全て変数に読み込むことができる。この方法ではメモリに全てのデータを読み込むが、（OSが対応している場合のみ）リソースの消費を抑えるためメモリマッピング技術が使われる。</p>
<pre class="brush: php;">
&lt;?php
$data = file_get_contents('count.txt');
?&gt;
</pre>
<pre class="brush: php;">
&lt;?php
$data = implode('n', file('count.txt'));
?&gt;
</pre>
<p>さらに、PHP5では以下のようにfile_put_contents関数を使用し、ファイルに書き込みを行うこともできる。</p>
<pre class="brush: php;">
&lt;?php
$data = 'This is a pen!';
file_put_contents('count.txt', $data, FILE_APPEND | LOCK_EX);
?&gt;
</pre>
<div class="kakomi">
<h4>各関数について</h4>
<dl>
<dt>int <strong>readfile</strong>(string $filename[, bool $use_inc_path=false[, resource $stream_context]])</dt>
<dd>ファイルを読み込んで標準出力に書き出す。</dd>
<dt>string <strong>file_get_contents</strong>(string $filename[, bool $use_inc_path=false[, resource $stream_context]])</dt>
<dd>引数で指定したファイルの内容を文字列として全て読み込む。失敗した場合はfalseを返す。空白のような文字が含まれるURLをオープンする際は、urlencode関数でエンコードする必要がある。</dd>
<dt>int <strong>file_put_contents</strong>(string $filename, mixed $data[, int $flags[, resource $context]])</dt>
<dd>第一引数で指定したファイルに、第二引数で指定したデータを書き込む。第三引数でFILE_APPENDを指定しない場合は、ファイルが上書きされる。また、ファイルを多数のユーザが操作する場合は必ずLOCK_EXを指定する。</dd>
<dt>array <strong>file</strong>(string $filename)</dt>
<dd>ファイル全体を読み込んで配列に格納する。</dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.justoneplanet.info/2009/05/26/php-accessing-files%ef%bc%88%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%b8%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

