} else {
    echo "upload file fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
}
$fdfs = new FastDFS();
$file_info = $fdfs->storage_upload_by_callback($upload_callback_array, 'txt');
if ($file_info) {
    $group_name = $file_info['group_name'];
    $remote_filename = $file_info['filename'];
    var_dump($file_info);
    var_dump($fdfs->get_file_info($group_name, $remote_filename));
    $download_callback_arg['filename'] = '/tmp/fdfs_out.txt';
    $fdfs->storage_download_file_to_callback($group_name, $remote_filename, $download_callback_array);
} else {
    echo "upload file fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
}
$file_id = $fdfs->storage_upload_by_callback1($upload_callback_array, 'txt');
if ($file_id) {
    var_dump($file_id);
    $download_callback_arg['filename'] = '/tmp/fdfs_out1.txt';
    $fdfs->storage_download_file_to_callback1($file_id, $download_callback_array);
} else {
    echo "upload file fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
}
function my_upload_file_callback($sock, $args)
{
    var_dump($args);
    $ret = fastdfs_send_data($sock, $args['buff']);
    return $ret;
}
function my_download_file_callback($args, $file_size, $data)
{