大头龙仔Blog

A strong man can save himself. A great man can save another.

惯C使用PHP的fwrite

| Comments

function fwrite_stream($fp, $string)
{
    $strLen  = strlen($string);
    for ( $written = 0; $written < $strLen; $written += $len )
    {
        $len = fwrite($fp, substr($string, $written));
        if ( ! $len )
        {
            return $len;
        }
    }
    return $written;
}
我们可能有时需要popen一个程序,通过管理传送数据给此程序
这时我们用fwrite来写入,事实上此时写入最大长度为4096,从strace跟踪就可以得知
所以我们一次fwrite写不完,就需要一次次地去写,上面的fwrite_stream是PHP Manual提供的,当遇到此种情况时可以用
其实就是惯C用法了,不过我平时总是因为PHP是脚本语言而忽略一些细节,平时也没有遇到要写这么大的数据量,这次遇到问题总结一下

事实上写文件时也可以用这个函数,不过PHP好像比较推荐用file_put_contents来写入一大坨数据
同样想一次读入整个文件内容,用file_get_contents也是比较好的,因为

file_get_contents() is the preferred way to read the contents of a file into a string.
It will use memory mapping techniques if supported by your OS to enhance performance.

Comments