├── .gitattributes
├── .gitignore
├── README.md
├── docker
└── Dockerfile
├── images
└── cut.png
├── lua
├── resize_pic.sh
├── thumbnail.lua
├── thumbnailauto.lua
├── urlrewrite.lua
└── water.lua
├── nginx
├── nginx.conf
└── nginxauto.conf
├── php_client
├── README
├── config.m4
├── fastdfs_appender_test.php
├── fastdfs_appender_test1.php
├── fastdfs_callback_test.php
├── fastdfs_client.c
├── fastdfs_client.h
├── fastdfs_client.ini
├── fastdfs_client.spec.in
├── fastdfs_test.php
├── fastdfs_test1.php
└── fastdfs_test_slave.php
└── test
├── fastdfs.php
└── test.sh
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear on external disk
35 | .Spotlight-V100
36 | .Trashes
37 |
38 | # Directories potentially created on remote AFP share
39 | .AppleDB
40 | .AppleDesktop
41 | Network Trash Folder
42 | Temporary Items
43 | .apdisk
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### install
2 | 进入docker目录
3 | docker build -t fastdfs:dev .
4 | 如果比较慢可以换一下网易的源
5 | docker pull hub.c.163.com/qieangel2013/ngx-fastdfs:latest
6 | ### 使用
7 | docker run --net=host -idt -p 80:80 fastdfs:dev '/etc/rc.local'
8 | ### 测试
9 | 进入容器执行test目录下的./test.sh或者直接执行下面脚本
10 | fdfs_test /etc/fdfs/client.conf upload /home/steven/01.jpg
11 | ...
12 | group_name=group1, ip_addr=192.168.1.181, port=23000
13 | storage_upload_by_filename
14 | group_name=group1, remote_filename=M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580.jpg
15 | ...
16 | example file url: http://192.168.1.181/group1/M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580.jpg
17 | storage_upload_slave_by_filename
18 | group_name=group1, remote_filename=M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580_big.jpg
19 | ...
20 | example file url: http://192.168.1.181/group1/M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580_big.jpg
21 | ### php调用
22 | 首先进入php_client
23 | ./configure --with-php-config=/usr/local/php/bin/php-config
24 | make&&make install
25 | 在php.ini里添加
26 | extension=fastdfs_client.so
27 | [fastdfs_client]
28 | fastdfs_client.base_path = /home/fastdfs/fastdfs
29 | fastdfs_client.connect_timeout = 2
30 | fastdfs_client.network_timeout = 60
31 | fastdfs_client.log_level = info
32 | fastdfs_client.log_filename =
33 | fastdfs_client.tracker_group_count = 1
34 | fastdfs_client.tracker_group0 = /etc/fdfs/client.conf
35 | fastdfs_client.use_connection_pool = true
36 | fastdfs_client.connection_pool_max_idle_time = 3600
37 | 根据自己的情况做相应的修改
38 | 重启php-fpm
39 | 执行test目录下的fastdfs.php就可以看到效果了
40 | ### 使用效果
41 | 
42 | ### 自动压缩
43 | 自动压缩采用减少图片质量来达到减小图片体积的效果
44 | 使用方法是把nginx里的nginxauto.conf替换原有的或者自己按着该文件修改
45 | 把lua里的thumbnailauto.lua文件替换原有的或者自己按着该文件修改
46 | 注意:fastdfs的storage的配置/etc/fdfs/storage.conf中run_by_group和run_by_user,最好跟nginx的用户组配置一样
47 | ### liveim是一款直播平台,内置im聊天功能
48 | 由于未开源,需要授权可以获取源代码
49 | http://www.weivq.com:88/ (演示地址)
50 | http://www.weivq.com:88/public/uploads/LiveIm.apk (安卓演示)
51 | http://www.weivq.com:88/public/uploads/LiveImInstall.exe (pc端演示)
52 | 
53 | 
54 | 
55 | ### 交流使用
56 | 交流群:337937322
57 | ### 如果你对我的辛勤劳动给予肯定,请给我捐赠,你的捐赠是我最大的动力
58 | 
59 | 
60 | [项目捐赠列表](https://github.com/qieangel2013/zys/wiki/%E9%A1%B9%E7%9B%AE%E6%8D%90%E8%B5%A0)
61 |
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | #ngx-fastdfs
2 | # Version 0.1
3 |
4 | FROM qieangel2013d/ngx-fastdfs:latest
5 |
6 | MAINTAINER 904208360@qq.com
7 |
8 | CMD ["/etc/rc.local", "-D", "FOREGROUND"]
9 |
--------------------------------------------------------------------------------
/images/cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qieangel2013/ngx-fastdfs/7f9aec290314645d4c64c002a7744f42c8a7aeff/images/cut.png
--------------------------------------------------------------------------------
/lua/resize_pic.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #du -sk `find /usr/local/fastDFS/storage/data/ |grep "$1"`| sort -n -k 1 -r |awk '{if ($1>1000) print $2}' >/tmp/resize_pic.log
4 | cp /tmp/resize_pic_new.log /tmp/resize_pic_old.log
5 | find /usr/local/fastDFS/storage/data/ |grep "\." |grep -v "\_bak" |grep -v "\_water">/tmp/resize_pic_new.log
6 |
7 | comm -23 <(sort /tmp/resize_pic_new.log|uniq ) <(sort /tmp/resize_pic_old.log|uniq ) > /tmp/resize_pic.log
8 |
9 | for v_file in `grep -v 'original' /tmp/resize_pic.log`
10 | do
11 | v_file_short=${v_file%%.*}
12 | v_file_type=${v_file#*.}
13 | v_count=`grep $v_file_short\_original /tmp/resize_pic.log|wc -l`
14 | # echo $v_file_short\_original >>/tmp/resize.log
15 | # echo 'v_file_short='$v_file_short>>/tmp/resize.log
16 | # echo 'v_file='$v_file>>/tmp/resize.log
17 | # echo 'v_count='$v_count>>/tmp/resize.log
18 | if [ $v_count -lt 1 ];then
19 | # echo 'this is 0' >> /tmp/resize.log
20 | # cp $v_file $v_file_short\_original\.$v_file_type
21 |
22 | if [ $v_file_type == "png" ];then
23 | cp $v_file $v_file_short\_original\.$v_file_type
24 | convert $v_file -resize '70%' PNG8:$v_file
25 | echo "/usr/local/bin/gm convert $v_file -resize '70%' PNG8:$v_file" >> /tmp/resize.log
26 | fi
27 |
28 | if [ $v_file_type == "JPEG" ];then
29 | cp $v_file $v_file_short\_original\.$v_file_type
30 | /usr/local/bin/gm convert -quality 30 $v_file $v_file
31 | echo "/usr/local/bin/gm convert -quality 30 $v_file $v_file" >> /tmp/resize.log
32 | fi
33 |
34 | if [ $v_file_type == "jpeg" ];then
35 | cp $v_file $v_file_short\_original\.$v_file_type
36 | /usr/local/bin/gm convert -quality 30 $v_file $v_file
37 | echo "/usr/local/bin/gm convert -quality 30 $v_file $v_file" >> /tmp/resize.log
38 | fi
39 |
40 |
41 | if [ $v_file_type == "jpg" ];then
42 | cp $v_file $v_file_short\_original\.$v_file_type
43 | /usr/local/bin/gm convert -quality 30 $v_file $v_file
44 | echo "/usr/local/bin/gm convert -quality 30 $v_file $v_file" >> /tmp/resize.log
45 | fi
46 |
47 | if [ $v_file_type == "JPG" ];then
48 | cp $v_file $v_file_short\_original\.$v_file_type
49 | /usr/local/bin/gm convert -quality 30 $v_file $v_file
50 | echo "/usr/local/bin/gm convert -quality 30 $v_file $v_file" >> /tmp/resize.log
51 | fi
52 |
53 |
54 |
55 |
56 | if [ $v_file_type == "gif" ];then
57 | cp $v_file $v_file_short\_original\.$v_file_type
58 | /usr/bin/convert $v_file -fuzz 8% -layers optimize $v_file
59 | echo "convert $v_file -fuzz 8% -layers optimize $v_file" >> /tmp/resize.log
60 | fi
61 |
62 | wide=`gm identify -format " %w %h" $v_file |awk '{print $1}'`
63 | high=`gm identify -format " %w %h" $v_file |awk '{print $2}'`
64 |
65 | if [ $wide -gt 1080 ];then
66 | newhigh=$(((($high * 1080))/$wide))
67 | gm convert $v_file -thumbnail "1080x$newhigh" $v_file
68 | fi
69 |
70 |
71 |
72 | else
73 | echo 'this is not 0' >> /tmp/resize.log
74 | fi
75 | done
76 |
77 | rq=`date "+%Y%m%d"`
78 | cat /tmp/resize_pic.log >> /tmp/resize_pic_$rq\.log
79 |
80 |
81 |
--------------------------------------------------------------------------------
/lua/thumbnail.lua:
--------------------------------------------------------------------------------
1 | local preName = ngx.var.a
2 | local whParam = ngx.var.b
3 | local qParams = ngx.var.c
4 | local qParam = string.sub(qParams,2)
5 | local suffix = ngx.var.d
6 |
7 | local command = "gm convert " .. ngx.var.image_dir .. preName .. "." .. suffix
8 |
9 | if (whParam=="")
10 | then
11 | else
12 | command = command .. " -thumbnail " .. whParam
13 | end
14 |
15 | if (qParams=="")
16 | then
17 | else
18 | command = command .. " -quality " .. qParam
19 | end
20 |
21 | command = command .. " " .. ngx.var.file
22 |
23 | os.execute("echo preName=" .. preName .. " > /usr/local/nginx/lua/luaLog.txt")
24 | os.execute("echo whParam=" .. whParam .. " > /usr/local/nginx/lua/luaLog.txt")
25 | os.execute("echo qParams=" .. qParams .. " > /usr/local/nginx/lua/luaLog.txt")
26 | os.execute("echo qParam=" .. qParam .. " > /usr/local/nginx/lua/luaLog.txt")
27 | os.execute("echo suffix=" .. suffix .. " > /usr/local/nginx/lua/luaLog.txt")
28 | os.execute("echo command=" .. command .. " > /usr/local/nginx/lua/luaLog.txt")
29 |
30 | os.execute(command)
31 | ngx.redirect(ngx.var.uri)
32 |
--------------------------------------------------------------------------------
/lua/thumbnailauto.lua:
--------------------------------------------------------------------------------
1 | local preName = ngx.var.a
2 | local suffix = ngx.var.e
3 | local command = "gm convert "
4 | local cpcommand="cp " .. ngx.var.image_dir .. preName .. "." .. suffix .. " " .. ngx.var.image_dir .. preName .. "." .. suffix .. ".bak"
5 | os.execute(cpcommand)
6 | if(string.lower(suffix)=="jpg" or string.lower(suffix)=="jpeg") then
7 | command = command .. " -quality 30 " .. ngx.var.image_dir .. preName .. "." .. suffix .. " " .. ngx.var.image_dir .. preName .. "." .. suffix
8 | else if(string.lower(suffix)=="png") then
9 | command = command .. ngx.var.image_dir .. preName .. "." .. suffix .. " -resize '80%' PNG8:" .. ngx.var.image_dir .. preName .. "." .. suffix
10 | else if(string.lower(suffix)=="gif") then
11 | command = "convert "
12 | command = command .. ngx.var.image_dir .. preName .. "." .. suffix .. " -fuzz 8% -layers optimize " .. ngx.var.image_dir .. preName .. "." .. suffix
13 | end
14 | end
15 | end
16 | os.execute(command)
17 | os.execute("echo command=" .. command .. " > /usr/local/nginx/lua/luaLog.txt")
18 | ngx.redirect(ngx.var.uri)
--------------------------------------------------------------------------------
/lua/urlrewrite.lua:
--------------------------------------------------------------------------------
1 | location ~ \.(js|css)$
2 | {
3 | root html/h5;
4 | if ($request_uri !~ "^(.*)/(.*)\.(js|css)\?ran=") {
5 | content_by_lua '
6 | local randomnum =ngx.now();
7 | local uri=ngx.var.uri;
8 | ngx.redirect(uri.."?ran=" .. randomnum);
9 | ';
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/lua/water.lua:
--------------------------------------------------------------------------------
1 | local preName = ngx.var.a
2 | local whParam = ngx.var.b
3 | local qParams = ngx.var.c
4 | local qParam = string.sub(qParams,2)
5 | local suffix = ngx.var.d
6 |
7 | local command = "gm convert " .. ngx.var.image_dir .. preName .. "." .. suffix
8 |
9 | if (whParam=="")
10 | then
11 | else
12 | if(whParam=='water')
13 | then
14 | command = "identify -format '%[EXIF:*]' " .. ngx.var.image_dir .. preName .. "." .. suffix .. "|(grep Orientation || echo 1)|awk -F \"\" '{for(i=1;i<=NF;i++){if ($i ~ /[[:digit:]]/){str=$i;str1=(str1 str)}}print str1}'|awk '{if($NF==6) cmd= \"cp " .. ngx.var.image_dir .. preName .. "." .. suffix .. " " .. ngx.var.image_dir .. preName .. "_bak." .. suffix .. ";mogrify -strip -rotate 90 " .. ngx.var.image_dir .. preName .. "_bak." .. suffix .. ";convert " .. ngx.var.image_dir .. preName .. "_bak." .. suffix .. " /usr/local/nginx/lua/water.png -gravity southeast -geometry +5+10 -composite " .. ngx.var.file .. "\";else if($NF==8)cmd= \"cp ".. ngx.var.image_dir .. preName .. "." .. suffix .. " " .. ngx.var.image_dir .. preName .. "_bak." .. suffix .. ";mogrify -strip -rotate 270 ".. ngx.var.image_dir .. preName .. "_bak." .. suffix .. ";convert ".. ngx.var.image_dir .. preName .. "_bak." .. suffix .. " /usr/local/nginx/lua/water.png -gravity southeast -geometry +5+10 -composite " .. ngx.var.file .. "\";else if($NF==3)cmd=\"cp ".. ngx.var.image_dir .. preName .. "." .. suffix .. " " .. ngx.var.image_dir .. preName .. "_bak." .. suffix ..";mogrify -strip -rotate 180 " .. ngx.var.image_dir .. preName .. "_bak." .. suffix .. ";convert ".. ngx.var.image_dir .. preName .. "_bak." .. suffix .. " /usr/local/nginx/lua/water.png -gravity southeast -geometry +5+10 -composite " .. ngx.var.file .. "\";else cmd=\"convert ".. ngx.var.image_dir .. preName .. "." .. suffix .. " /usr/local/nginx/lua/water.png -gravity southeast -geometry +5+10 -composite " .. ngx.var.file .. "\";system(cmd);}' "
15 | else
16 | command = command .. " -thumbnail " .. whParam
17 | end
18 | end
19 |
20 | if (qParams=="")
21 | then
22 | else
23 | if(whParam =='water')
24 | then
25 | else
26 | command = command .. " -quality " .. qParam
27 | end
28 | end
29 |
30 | if(whParam=='water')
31 | then
32 | else
33 | command = command .. " " .. ngx.var.file
34 | end
35 | -- os.execute(whParam .. "echo command=" .. command .. whParam" > /usr/local/nginx/lua/luaLog.txt")
36 |
37 | if (whParam=="")
38 | then
39 | else
40 | -- os.execute("echo preName=" .. preName .. " > /usr/local/nginx/lua/luaLog.txt")
41 | -- os.execute("echo whParam=" .. whParam .. " > /usr/local/nginx/lua/luaLog.txt")
42 | -- os.execute("echo qParams=" .. qParams .. " > /usr/local/nginx/lua/luaLog.txt")
43 | -- os.execute("echo qParam=" .. qParam .. " > /usr/local/nginx/lua/luaLog.txt")
44 | -- os.execute("echo suffix=" .. suffix .. " > /usr/local/nginx/lua/luaLog.txt")
45 | os.execute("echo command=" .. command .. " > /usr/local/nginx/lua/luaLog.txt")
46 |
47 | os.execute(command)
48 | ngx.redirect(ngx.var.uri)
49 | end
50 |
--------------------------------------------------------------------------------
/nginx/nginx.conf:
--------------------------------------------------------------------------------
1 |
2 | user www www;
3 | worker_processes 1;
4 |
5 | #error_log logs/error.log;
6 | #error_log logs/error.log notice;
7 | #error_log logs/error.log info;
8 |
9 | #pid logs/nginx.pid;
10 |
11 |
12 | events {
13 | worker_connections 1024;
14 | }
15 |
16 |
17 | http {
18 | include mime.types;
19 | default_type application/octet-stream;
20 |
21 | #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
22 | # '$status $body_bytes_sent "$http_referer" '
23 | # '"$http_user_agent" "$http_x_forwarded_for"';
24 |
25 | #access_log logs/access.log main;
26 |
27 | sendfile on;
28 | #tcp_nopush on;
29 | client_max_body_size 64M;
30 | #keepalive_timeout 0;
31 | keepalive_timeout 65;
32 |
33 | #gzip on;
34 |
35 | #access_log logs/host.access.log main;
36 | lua_shared_dict config 1m;
37 | lua_package_path "/usr/local/lib/lua/5.1/?.lua;/usr/local/share/lua/5.1/?.lua;;";
38 | lua_package_cpath '/usr/local/lib/lua/5.1/?.so;/usr/local/share/lua/5.1/?.so;;';
39 | server {
40 | listen 80;
41 | server_name localhost;
42 |
43 | #charset koi8-r;
44 |
45 | #access_log logs/host.access.log main;
46 | location / {
47 | root /usr/local/nginx/html/youxiu/;
48 | index index.php index.html index.htm;
49 | #if (!-e $request_filename) {
50 | # rewrite ^/(.*) /index.php?$1 last;
51 | # }
52 |
53 | }
54 | location /favicon.ico {
55 | log_not_found off;
56 | access_log off;
57 | }
58 |
59 | location ^~ /data/upload/group1/ {
60 | rewrite ^/data/upload/group1/(.*)$ /group1/$1;
61 | }
62 | location ~ /data/user/[^\/]+/[^\/]+/upload/group1/ {
63 | rewrite ^/data/user/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/upload(/|//)group1/(.*)$ /group1/$4;
64 | }
65 | location /group1/M00 {
66 | alias /home/fastdfs/fastdfs/storage/data;
67 |
68 | set $image_root "/home/fastdfs/fastdfs/storage/data";
69 | #if ($uri ~ "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)") {
70 | if ($uri ~ "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)") {
71 | set $image_dir "$image_root/$3/$4/";
72 | set $image_name "$5";
73 | set $file "$image_dir$image_name";
74 | }
75 | if ($image_name ~ "([a-zA-Z0-9_\-]+)_([0-9]+x[0-9]+)?(q[0-9]{1,2})?.([a-zA-Z0-9]+)") {
76 | #if ($image_name ~ "([a-zA-Z0-9_\-]+)(_([0-9]+x[0-9]+)?(q[0-9]{1,2})?)?.([a-zA-Z0-9]+)") {
77 | set $a "$1";
78 | set $b "$2";
79 | set $c "$3";
80 | set $d "$4";
81 | set $e "$5";
82 | set $f "$6";
83 | #set $zqtmp ".bak";
84 | #set $file "$file$zqtmp";
85 | set $file "$file";
86 | }
87 |
88 | # default_type "text/plain";
89 | #if (!-e $request_filename) {
90 | if (!-f $file) {
91 | # 关闭lua代码缓存,方便调试lua脚本
92 | #lua_code_cache off;
93 | content_by_lua_file "/usr/local/nginx/lua/thumbnail.lua";
94 | #content_by_lua '
95 | # --ngx.say(ngx.var.a)
96 | # --ngx.say(ngx.var.b)
97 | # --ngx.say(ngx.var.c)
98 | #';
99 | }
100 | # if (-f $file) {
101 | # rewrite ^(.*) http://www.jd.com break;
102 | # }
103 |
104 | ngx_fastdfs_module;
105 | }
106 | #error_page 404 /404.html;
107 |
108 | # redirect server error pages to the static page /50x.html
109 | #
110 | error_page 500 502 503 504 /50x.html;
111 | #location = /50x.html {
112 | # root /usr/local/nginx/html/api/;
113 | #}
114 |
115 | # proxy the PHP scripts to Apache listening on 127.0.0.1:80
116 | #
117 | #location ~ \.php$ {
118 | # proxy_pass http://127.0.0.1;
119 | #}
120 |
121 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
122 | #
123 | #location ~ \.php$ {
124 | # root /usr/local/nginx/html/api/;
125 | # fastcgi_pass 127.0.0.1:9000;
126 | # fastcgi_index index.php;
127 | # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
128 | # include fastcgi_params;
129 | #}
130 |
131 | # deny access to .htaccess files, if Apache's document root
132 | # concurs with nginx's one
133 | #
134 | #location ~ /\.ht {
135 | # deny all;
136 | #}
137 | location ~ \.php$ {
138 | root /usr/local/nginx/html/youxiu/;
139 | fastcgi_pass 127.0.0.1:9000;
140 | fastcgi_index index.php;
141 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
142 | include fastcgi_params;
143 | }
144 |
145 | }
146 | # another virtual host using mix of IP-, name-, and port-based configuration
147 | #
148 | server {
149 | listen 8899;
150 | # listen somename:8080;
151 | server_name localhost;
152 |
153 | location / {
154 | root html/youxiu/web;
155 | index index.php index.html index.htm;
156 | }
157 | location ~ \.php$ {
158 | root /usr/local/nginx/html/youxiu/web;
159 | fastcgi_pass 127.0.0.1:9000;
160 | fastcgi_index index.php;
161 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
162 | include fastcgi_params;
163 | }
164 |
165 | }
166 |
167 |
168 | # HTTPS server
169 | #
170 | #server {
171 | # listen 443;
172 | # server_name localhost;
173 |
174 | # ssl on;
175 | # ssl_certificate cert.pem;
176 | # ssl_certificate_key cert.key;
177 |
178 | # ssl_session_timeout 5m;
179 |
180 | # ssl_protocols SSLv2 SSLv3 TLSv1;
181 | # ssl_ciphers HIGH:!aNULL:!MD5;
182 | # ssl_prefer_server_ciphers on;
183 |
184 | # location / {
185 | # root html;
186 | # index index.html index.htm;
187 | # }
188 | #}
189 | include vhosts.conf;
190 |
191 | server {
192 | listen 443 default_server ssl;
193 | server_name xcx.tianlian.cn;
194 |
195 | #charset koi8-r;
196 | #access_log logs/host.access.log main;
197 | location / {
198 | root /usr/local/nginx/html/youxiu;
199 | index index.php index.html index.htm;
200 | if (!-e $request_filename) {
201 | rewrite ^/(.*) /index.php?$1 last;
202 | }
203 | }
204 | location ~ \.php$ {
205 | root /usr/local/nginx/html/youxiu;
206 | fastcgi_pass 127.0.0.1:9000;
207 | fastcgi_index index.php;
208 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
209 | include fastcgi_params;
210 | }
211 |
212 | #ssl on;
213 | ssl_certificate /usr/local/nginx/ssl/xcx.tianlian.cn.crt;
214 | ssl_certificate_key /usr/local/nginx/ssl/xcx.tianlian.cn.key;
215 | #ssl_session_timeout 5m;
216 | #ssl_protocols SSLv3 TLSv1;
217 | #ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
218 | #ssl_prefer_server_ciphers on;
219 |
220 |
221 | error_page 500 502 503 504 /50x.html;
222 | location = /50x.html {
223 | root html;
224 | }
225 | }
226 |
227 | }
228 |
--------------------------------------------------------------------------------
/nginx/nginxauto.conf:
--------------------------------------------------------------------------------
1 |
2 | user www www;
3 | worker_processes 1;
4 |
5 | #error_log logs/error.log;
6 | #error_log logs/error.log notice;
7 | #error_log logs/error.log info;
8 |
9 | #pid logs/nginx.pid;
10 |
11 |
12 | events {
13 | worker_connections 1024;
14 | }
15 |
16 |
17 | http {
18 | include mime.types;
19 | default_type application/octet-stream;
20 |
21 | #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
22 | # '$status $body_bytes_sent "$http_referer" '
23 | # '"$http_user_agent" "$http_x_forwarded_for"';
24 |
25 | #access_log logs/access.log main;
26 |
27 | sendfile on;
28 | #tcp_nopush on;
29 | client_max_body_size 64M;
30 | #keepalive_timeout 0;
31 | keepalive_timeout 65;
32 |
33 | #gzip on;
34 |
35 | #access_log logs/host.access.log main;
36 | lua_shared_dict config 1m;
37 | lua_package_path "/usr/local/lib/lua/5.1/?.lua;/usr/local/share/lua/5.1/?.lua;;";
38 | lua_package_cpath '/usr/local/lib/lua/5.1/?.so;/usr/local/share/lua/5.1/?.so;;';
39 | server {
40 | listen 80;
41 | server_name localhost;
42 |
43 | #charset koi8-r;
44 |
45 | #access_log logs/host.access.log main;
46 | location / {
47 | root /usr/local/nginx/html/youxiu/;
48 | index index.php index.html index.htm;
49 | #if (!-e $request_filename) {
50 | # rewrite ^/(.*) /index.php?$1 last;
51 | # }
52 |
53 | }
54 | location /favicon.ico {
55 | log_not_found off;
56 | access_log off;
57 | }
58 |
59 | location ^~ /data/upload/group1/ {
60 | rewrite ^/data/upload/group1/(.*)$ /group1/$1;
61 | }
62 | location ~ /data/user/[^\/]+/[^\/]+/upload/group1/ {
63 | rewrite ^/data/user/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/upload(/|//)group1/(.*)$ /group1/$4;
64 | }
65 | location /group1/M00 {
66 | alias /home/fastdfs/fastdfs/storage/data;
67 |
68 | set $image_root "/home/fastdfs/fastdfs/storage/data";
69 | #if ($uri ~ "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)") {
70 | if ($uri ~ "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)") {
71 | set $image_dir "$image_root/$3/$4/";
72 | set $image_name "$5";
73 | set $file "$image_dir$image_name";
74 | }
75 | #if ($image_name ~ "([a-zA-Z0-9_\-]+)_([0-9]+x[0-9]+)?(q[0-9]{1,2})?.([a-zA-Z0-9]+)") {
76 | if ($image_name ~ "([a-zA-Z0-9_\-]+)(_([0-9]+x[0-9]+)?(q[0-9]{1,2})?)?.([a-zA-Z0-9]+)") {
77 | set $a "$1";
78 | set $b "$2";
79 | set $c "$3";
80 | set $d "$4";
81 | set $e "$5";
82 | set $f "$6";
83 | set $zqtmp ".bak";
84 | set $file "$file$zqtmp";
85 | }
86 |
87 | # default_type "text/plain";
88 | #if (!-e $request_filename) {
89 | if (!-f $file) {
90 | # 关闭lua代码缓存,方便调试lua脚本
91 | #lua_code_cache off;
92 | content_by_lua_file "/usr/local/nginx/lua/thumbnail.lua";
93 | #content_by_lua '
94 | # --ngx.say(ngx.var.a)
95 | # --ngx.say(ngx.var.b)
96 | # --ngx.say(ngx.var.c)
97 | #';
98 | }
99 | # if (-f $file) {
100 | # rewrite ^(.*) http://www.jd.com break;
101 | # }
102 |
103 | ngx_fastdfs_module;
104 | }
105 | #error_page 404 /404.html;
106 |
107 | # redirect server error pages to the static page /50x.html
108 | #
109 | error_page 500 502 503 504 /50x.html;
110 | #location = /50x.html {
111 | # root /usr/local/nginx/html/api/;
112 | #}
113 |
114 | # proxy the PHP scripts to Apache listening on 127.0.0.1:80
115 | #
116 | #location ~ \.php$ {
117 | # proxy_pass http://127.0.0.1;
118 | #}
119 |
120 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
121 | #
122 | #location ~ \.php$ {
123 | # root /usr/local/nginx/html/api/;
124 | # fastcgi_pass 127.0.0.1:9000;
125 | # fastcgi_index index.php;
126 | # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
127 | # include fastcgi_params;
128 | #}
129 |
130 | # deny access to .htaccess files, if Apache's document root
131 | # concurs with nginx's one
132 | #
133 | #location ~ /\.ht {
134 | # deny all;
135 | #}
136 | location ~ \.php$ {
137 | root /usr/local/nginx/html/youxiu/;
138 | fastcgi_pass 127.0.0.1:9000;
139 | fastcgi_index index.php;
140 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
141 | include fastcgi_params;
142 | }
143 |
144 | }
145 | # another virtual host using mix of IP-, name-, and port-based configuration
146 | #
147 | server {
148 | listen 8899;
149 | # listen somename:8080;
150 | server_name localhost;
151 |
152 | location / {
153 | root html/youxiu/web;
154 | index index.php index.html index.htm;
155 | }
156 | location ~ \.php$ {
157 | root /usr/local/nginx/html/youxiu/web;
158 | fastcgi_pass 127.0.0.1:9000;
159 | fastcgi_index index.php;
160 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
161 | include fastcgi_params;
162 | }
163 |
164 | }
165 |
166 |
167 | # HTTPS server
168 | #
169 | #server {
170 | # listen 443;
171 | # server_name localhost;
172 |
173 | # ssl on;
174 | # ssl_certificate cert.pem;
175 | # ssl_certificate_key cert.key;
176 |
177 | # ssl_session_timeout 5m;
178 |
179 | # ssl_protocols SSLv2 SSLv3 TLSv1;
180 | # ssl_ciphers HIGH:!aNULL:!MD5;
181 | # ssl_prefer_server_ciphers on;
182 |
183 | # location / {
184 | # root html;
185 | # index index.html index.htm;
186 | # }
187 | #}
188 | include vhosts.conf;
189 |
190 | server {
191 | listen 443 default_server ssl;
192 | server_name xcx.tianlian.cn;
193 |
194 | #charset koi8-r;
195 | #access_log logs/host.access.log main;
196 | location / {
197 | root /usr/local/nginx/html/youxiu;
198 | index index.php index.html index.htm;
199 | if (!-e $request_filename) {
200 | rewrite ^/(.*) /index.php?$1 last;
201 | }
202 | }
203 | location ~ \.php$ {
204 | root /usr/local/nginx/html/youxiu;
205 | fastcgi_pass 127.0.0.1:9000;
206 | fastcgi_index index.php;
207 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
208 | include fastcgi_params;
209 | }
210 |
211 | #ssl on;
212 | ssl_certificate /usr/local/nginx/ssl/xcx.tianlian.cn.crt;
213 | ssl_certificate_key /usr/local/nginx/ssl/xcx.tianlian.cn.key;
214 | #ssl_session_timeout 5m;
215 | #ssl_protocols SSLv3 TLSv1;
216 | #ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
217 | #ssl_prefer_server_ciphers on;
218 |
219 |
220 | error_page 500 502 503 504 /50x.html;
221 | location = /50x.html {
222 | root html;
223 | }
224 | }
225 |
226 | }
227 |
--------------------------------------------------------------------------------
/php_client/README:
--------------------------------------------------------------------------------
1 |
2 | Copyright (C) 2008 Happy Fish / YuQing
3 |
4 | FastDFS client php extension may be copied only under the terms of
5 | the Less GNU General Public License (LGPL).
6 |
7 | Please visit the FastDFS Home Page for more detail.
8 | Google code (English language): http://code.google.com/p/fastdfs/
9 | Chinese language: http://www.csource.com/
10 |
11 | In file fastdfs_client.ini, item fastdfs_client.tracker_group# point to
12 | the FastDFS client config filename. Please read ../INSTALL file to know
13 | about how to config FastDFS client.
14 |
15 | FastDFS client php extension compiled under PHP 5.2.x, Steps:
16 | phpize
17 | ./configure
18 | make
19 | make install
20 |
21 | #copy lib file to php extension directory, eg. /usr/lib/php/20060613/
22 | cp modules/fastdfs_client.so /usr/lib/php/20060613/
23 |
24 | #copy fastdfs_client.ini to PHP etc directory, eg. /etc/php/
25 | cp fastdfs_client.ini /etc/php/
26 |
27 | #modify config file fastdfs_client.ini, such as:
28 | vi /etc/php/fastdfs_client.ini
29 |
30 | #run fastdfs_test.php
31 | php fastdfs_test.php
32 |
33 |
34 | FastDFS PHP functions:
35 |
36 | string fastdfs_client_version()
37 | return client library version
38 |
39 |
40 | long fastdfs_get_last_error_no()
41 | return last error no
42 |
43 |
44 | string fastdfs_get_last_error_info()
45 | return last error info
46 |
47 |
48 | string fastdfs_http_gen_token(string remote_filename, int timestamp)
49 | generate anti-steal token for HTTP download
50 | parameters:
51 | remote_filename: the remote filename (do NOT including group name)
52 | timestamp: the timestamp (unix timestamp)
53 | return token string for success, false for error
54 |
55 |
56 | array fastdfs_get_file_info(string group_name, string filename)
57 | get file info from the filename
58 | parameters:
59 | group_name: the group name of the file
60 | remote_filename: the filename on the storage server
61 | return assoc array for success, false for error.
62 | the assoc array including following elements:
63 | create_timestamp: the file create timestamp (unix timestamp)
64 | file_size: the file size (bytes)
65 | source_ip_addr: the source storage server ip address
66 |
67 |
68 | array fastdfs_get_file_info1(string file_id)
69 | get file info from the file id
70 | parameters:
71 | file_id: the file id (including group name and filename) or remote filename
72 | return assoc array for success, false for error.
73 | the assoc array including following elements:
74 | create_timestamp: the file create timestamp (unix timestamp)
75 | file_size: the file size (bytes)
76 | source_ip_addr: the source storage server ip address
77 |
78 |
79 | bool fastdfs_send_data(int sock, string buff)
80 | parameters:
81 | sock: the unix socket description
82 | buff: the buff to send
83 | return true for success, false for error
84 |
85 |
86 | string fastdfs_gen_slave_filename(string master_filename, string prefix_name
87 | [, string file_ext_name])
88 | generate slave filename by master filename, prefix name and file extension name
89 | parameters:
90 | master_filename: the master filename / file id to generate
91 | the slave filename
92 | prefix_name: the prefix name to generate the slave filename
93 | file_ext_name: slave file extension name, can be null or emtpy
94 | (do not including dot)
95 | return slave filename string for success, false for error
96 |
97 |
98 | boolean fastdfs_storage_file_exist(string group_name, string remote_filename
99 | [, array tracker_server, array storage_server])
100 | check file exist
101 | parameters:
102 | group_name: the group name of the file
103 | remote_filename: the filename on the storage server
104 | tracker_server: the tracker server assoc array including elements:
105 | ip_addr, port and sock
106 | storage_server: the storage server assoc array including elements:
107 | ip_addr, port and sock
108 | return true for exist, false for not exist
109 |
110 |
111 | boolean fastdfs_storage_file_exist1(string file_id
112 | [, array tracker_server, array storage_server])
113 | parameters:
114 | file_id: the file id of the file
115 | tracker_server: the tracker server assoc array including elements:
116 | ip_addr, port and sock
117 | storage_server: the storage server assoc array including elements:
118 | ip_addr, port and sock
119 | return true for exist, false for not exist
120 |
121 |
122 | array fastdfs_storage_upload_by_filename(string local_filename
123 | [, string file_ext_name, array meta_list, string group_name,
124 | array tracker_server, array storage_server])
125 | upload local file to storage server
126 | parameters:
127 | local_filename: the local filename
128 | file_ext_name: the file extension name, do not include dot(.)
129 | meta_list: meta data assoc array, such as
130 | array('width'=>1024, 'height'=>768)
131 | group_name: specify the group name to store the file
132 | tracker_server: the tracker server assoc array including elements:
133 | ip_addr, port and sock
134 | storage_server: the storage server assoc array including elements:
135 | ip_addr, port and sock
136 | return assoc array for success, false for error.
137 | the returned array includes elements: group_name and filename
138 |
139 |
140 | string fastdfs_storage_upload_by_filename1(string local_filename
141 | [, string file_ext_name, array meta_list, string group_name,
142 | array tracker_server, array storage_server])
143 | upload local file to storage server
144 | parameters:
145 | local_filename: the local filename
146 | file_ext_name: the file extension name, do not include dot(.)
147 | meta_list: meta data assoc array, such as
148 | array('width'=>1024, 'height'=>768)
149 | group_name: specify the group name to store the file
150 | tracker_server: the tracker server assoc array including elements:
151 | ip_addr, port and sock
152 | storage_server: the storage server assoc array including elements:
153 | ip_addr, port and sock
154 | return file_id for success, false for error.
155 |
156 |
157 | array fastdfs_storage_upload_by_filebuff(string file_buff
158 | [, string file_ext_name, array meta_list, string group_name,
159 | array tracker_server, array storage_server])
160 | upload file buff to storage server
161 | parameters:
162 | file_buff: the file content
163 | file_ext_name: the file extension name, do not include dot(.)
164 | meta_list: meta data assoc array, such as
165 | array('width'=>1024, 'height'=>768)
166 | group_name: specify the group name to store the file
167 | tracker_server: the tracker server assoc array including elements:
168 | ip_addr, port and sock
169 | storage_server: the storage server assoc array including elements:
170 | ip_addr, port and sock
171 | return assoc array for success, false for error.
172 | the returned array includes elements: group_name and filename
173 |
174 |
175 | string fastdfs_storage_upload_by_filebuff1(string file_buff
176 | [, string file_ext_name, array meta_list, string group_name,
177 | array tracker_server, array storage_server])
178 | upload file buff to storage server
179 | parameters:
180 | file_buff: the file content
181 | file_ext_name: the file extension name, do not include dot(.)
182 | meta_list: meta data assoc array, such as
183 | array('width'=>1024, 'height'=>768)
184 | group_name: specify the group name to store the file
185 | tracker_server: the tracker server assoc array including elements:
186 | ip_addr, port and sock
187 | storage_server: the storage server assoc array including elements:
188 | ip_addr, port and sock
189 | return file_id for success, false for error
190 |
191 |
192 | array fastdfs_storage_upload_by_callback(array callback_array
193 | [, string file_ext_name, array meta_list, string group_name,
194 | array tracker_server, array storage_server])
195 | upload file to storage server by callback
196 | parameters:
197 | callback_array: the callback assoc array, must have keys:
198 | callback - the php callback function name
199 | callback function prototype as:
200 | function upload_file_callback($sock, $args)
201 | file_size - the file size
202 | args - use argument for callback function
203 | file_ext_name: the file extension name, do not include dot(.)
204 | meta_list: meta data assoc array, such as
205 | array('width'=>1024, 'height'=>768)
206 | group_name: specify the group name to store the file
207 | tracker_server: the tracker server assoc array including elements:
208 | ip_addr, port and sock
209 | storage_server: the storage server assoc array including elements:
210 | ip_addr, port and sock
211 | return assoc array for success, false for error.
212 | the returned array includes elements: group_name and filename
213 |
214 |
215 | array fastdfs_storage_upload_by_callback1(array callback_array
216 | [, string file_ext_name, array meta_list, string group_name,
217 | array tracker_server, array storage_server])
218 | upload file to storage server by callback
219 | parameters:
220 | callback_array: the callback assoc array, must have keys:
221 | callback - the php callback function name
222 | callback function prototype as:
223 | function upload_file_callback($sock, $args)
224 | file_size - the file size
225 | args - use argument for callback function
226 | file_ext_name: the file extension name, do not include dot(.)
227 | meta_list: meta data assoc array, such as
228 | array('width'=>1024, 'height'=>768)
229 | group_name: specify the group name to store the file
230 | tracker_server: the tracker server assoc array including elements:
231 | ip_addr, port and sock
232 | storage_server: the storage server assoc array including elements:
233 | ip_addr, port and sock
234 | return file_id for success, false for error
235 |
236 |
237 | array fastdfs_storage_upload_appender_by_filename(string local_filename
238 | [, string file_ext_name, array meta_list, string group_name,
239 | array tracker_server, array storage_server])
240 | upload local file to storage server as appender file
241 | parameters:
242 | local_filename: the local filename
243 | file_ext_name: the file extension name, do not include dot(.)
244 | meta_list: meta data assoc array, such as
245 | array('width'=>1024, 'height'=>768)
246 | group_name: specify the group name to store the file
247 | tracker_server: the tracker server assoc array including elements:
248 | ip_addr, port and sock
249 | storage_server: the storage server assoc array including elements:
250 | ip_addr, port and sock
251 | return assoc array for success, false for error.
252 | the returned array includes elements: group_name and filename
253 |
254 |
255 | string fastdfs_storage_upload_appender_by_filename1(string local_filename
256 | [, string file_ext_name, array meta_list, string group_name,
257 | array tracker_server, array storage_server])
258 | upload local file to storage server as appender file
259 | parameters:
260 | local_filename: the local filename
261 | file_ext_name: the file extension name, do not include dot(.)
262 | meta_list: meta data assoc array, such as
263 | array('width'=>1024, 'height'=>768)
264 | group_name: specify the group name to store the file
265 | tracker_server: the tracker server assoc array including elements:
266 | ip_addr, port and sock
267 | storage_server: the storage server assoc array including elements:
268 | ip_addr, port and sock
269 | return file_id for success, false for error.
270 |
271 |
272 | array fastdfs_storage_upload_appender_by_filebuff(string file_buff
273 | [, string file_ext_name, array meta_list, string group_name,
274 | array tracker_server, array storage_server])
275 | upload file buff to storage server as appender file
276 | parameters:
277 | file_buff: the file content
278 | file_ext_name: the file extension name, do not include dot(.)
279 | meta_list: meta data assoc array, such as
280 | array('width'=>1024, 'height'=>768)
281 | group_name: specify the group name to store the file
282 | tracker_server: the tracker server assoc array including elements:
283 | ip_addr, port and sock
284 | storage_server: the storage server assoc array including elements:
285 | ip_addr, port and sock
286 | return assoc array for success, false for error.
287 | the returned array includes elements: group_name and filename
288 |
289 |
290 | string fastdfs_storage_upload_appender_by_filebuff1(string file_buff
291 | [, string file_ext_name, array meta_list, string group_name,
292 | array tracker_server, array storage_server])
293 | upload file buff to storage server as appender file
294 | parameters:
295 | file_buff: the file content
296 | file_ext_name: the file extension name, do not include dot(.)
297 | meta_list: meta data assoc array, such as
298 | array('width'=>1024, 'height'=>768)
299 | group_name: specify the group name to store the file
300 | tracker_server: the tracker server assoc array including elements:
301 | ip_addr, port and sock
302 | storage_server: the storage server assoc array including elements:
303 | ip_addr, port and sock
304 | return file_id for success, false for error
305 |
306 |
307 | array fastdfs_storage_upload_appender_by_callback(array callback_array
308 | [, string file_ext_name, array meta_list, string group_name,
309 | array tracker_server, array storage_server])
310 | upload file to storage server by callback as appender file
311 | parameters:
312 | callback_array: the callback assoc array, must have keys:
313 | callback - the php callback function name
314 | callback function prototype as:
315 | function upload_file_callback($sock, $args)
316 | file_size - the file size
317 | args - use argument for callback function
318 | file_ext_name: the file extension name, do not include dot(.)
319 | meta_list: meta data assoc array, such as
320 | array('width'=>1024, 'height'=>768)
321 | group_name: specify the group name to store the file
322 | tracker_server: the tracker server assoc array including elements:
323 | ip_addr, port and sock
324 | storage_server: the storage server assoc array including elements:
325 | ip_addr, port and sock
326 | return assoc array for success, false for error.
327 | the returned array includes elements: group_name and filename
328 |
329 |
330 | string fastdfs_storage_upload_appender_by_callback1(array callback_array
331 | [, string file_ext_name, array meta_list, string group_name,
332 | array tracker_server, array storage_server])
333 | upload file to storage server by callback as appender file
334 | parameters:
335 | callback_array: the callback assoc array, must have keys:
336 | callback - the php callback function name
337 | callback function prototype as:
338 | function upload_file_callback($sock, $args)
339 | file_size - the file size
340 | args - use argument for callback function
341 | file_ext_name: the file extension name, do not include dot(.)
342 | meta_list: meta data assoc array, such as
343 | array('width'=>1024, 'height'=>768)
344 | group_name: specify the group name to store the file
345 | tracker_server: the tracker server assoc array including elements:
346 | ip_addr, port and sock
347 | storage_server: the storage server assoc array including elements:
348 | ip_addr, port and sock
349 | return file_id for success, false for error
350 |
351 |
352 | boolean fastdfs_storage_append_by_filename(string local_filename,
353 | string group_name, appender_filename
354 | [, array tracker_server, array storage_server])
355 | append local file to the appender file of storage server
356 | parameters:
357 | local_filename: the local filename
358 | group_name: the the group name of appender file
359 | appender_filename: the appender filename
360 | tracker_server: the tracker server assoc array including elements:
361 | ip_addr, port and sock
362 | storage_server: the storage server assoc array including elements:
363 | ip_addr, port and sock
364 | return true for success, false for error
365 |
366 |
367 |
368 | string fastdfs_storage_append_by_filename1(string local_filename,
369 | string appender_file_id [, array tracker_server, array storage_server])
370 | append local file to the appender file of storage server
371 | parameters:
372 | local_filename: the local filename
373 | appender_file_id: the appender file id
374 | tracker_server: the tracker server assoc array including elements:
375 | ip_addr, port and sock
376 | storage_server: the storage server assoc array including elements:
377 | ip_addr, port and sock
378 | return true for success, false for error
379 |
380 |
381 |
382 | boolean fastdfs_storage_append_by_filebuff(string file_buff,
383 | string group_name, string appender_filename
384 | [, array tracker_server, array storage_server])
385 | append file buff to the appender file of storage server
386 | parameters:
387 | file_buff: the file content
388 | group_name: the the group name of appender file
389 | appender_filename: the appender filename
390 | tracker_server: the tracker server assoc array including elements:
391 | ip_addr, port and sock
392 | storage_server: the storage server assoc array including elements:
393 | ip_addr, port and sock
394 | return true for success, false for error
395 |
396 |
397 |
398 | boolean fastdfs_storage_append_by_filebuff1(string file_buff,
399 | string appender_file_id [, array tracker_server, array storage_server])
400 | append file buff to the appender file of storage server
401 | parameters:
402 | file_buff: the file content
403 | appender_file_id: the appender file id
404 | tracker_server: the tracker server assoc array including elements:
405 | ip_addr, port and sock
406 | storage_server: the storage server assoc array including elements:
407 | ip_addr, port and sock
408 | return true for success, false for error
409 |
410 |
411 |
412 | boolean fastdfs_storage_append_by_callback(array callback_array,
413 | string group_name, string appender_filename
414 | [, array tracker_server, array storage_server])
415 | append file to the appender file of storage server by callback
416 | parameters:
417 | callback_array: the callback assoc array, must have keys:
418 | callback - the php callback function name
419 | callback function prototype as:
420 | function upload_file_callback($sock, $args)
421 | file_size - the file size
422 | args - use argument for callback function
423 | group_name: the the group name of appender file
424 | appender_filename: the appender filename
425 | tracker_server: the tracker server assoc array including elements:
426 | ip_addr, port and sock
427 | storage_server: the storage server assoc array including elements:
428 | ip_addr, port and sock
429 | return true for success, false for error
430 |
431 |
432 |
433 | boolean fastdfs_storage_append_by_callback1(array callback_array,
434 | string appender_file_id [, array tracker_server, array storage_server])
435 | append file buff to the appender file of storage server
436 | parameters:
437 | callback_array: the callback assoc array, must have keys:
438 | callback - the php callback function name
439 | callback function prototype as:
440 | function upload_file_callback($sock, $args)
441 | file_size - the file size
442 | args - use argument for callback function
443 | appender_file_id: the appender file id
444 | tracker_server: the tracker server assoc array including elements:
445 | ip_addr, port and sock
446 | storage_server: the storage server assoc array including elements:
447 | ip_addr, port and sock
448 | return true for success, false for error
449 |
450 |
451 |
452 | boolean fastdfs_storage_modify_by_filename(string local_filename,
453 | long file_offset, string group_name, appender_filename,
454 | [array tracker_server, array storage_server])
455 | modify appender file by local file
456 | parameters:
457 | local_filename: the local filename
458 | file_offset: offset of appender file
459 | group_name: the the group name of appender file
460 | appender_filename: the appender filename
461 | tracker_server: the tracker server assoc array including elements:
462 | ip_addr, port and sock
463 | storage_server: the storage server assoc array including elements:
464 | ip_addr, port and sock
465 | return true for success, false for error
466 |
467 |
468 |
469 | boolean fastdfs_storage_modify_by_filename1(string local_filename,
470 | long file_offset, string appender_file_id
471 | [, array tracker_server, array storage_server])
472 | modify appender file by local file
473 | parameters:
474 | local_filename: the local filename
475 | file_offset: offset of appender file
476 | appender_file_id: the appender file id
477 | tracker_server: the tracker server assoc array including elements:
478 | ip_addr, port and sock
479 | storage_server: the storage server assoc array including elements:
480 | ip_addr, port and sock
481 | return true for success, false for error
482 |
483 |
484 |
485 | boolean fastdfs_storage_modify_by_filebuff(string file_buff,
486 | long file_offset, string group_name, string appender_filename
487 | [, array tracker_server, array storage_server])
488 | modify appender file by file buff
489 | parameters:
490 | file_buff: the file content
491 | file_offset: offset of appender file
492 | group_name: the the group name of appender file
493 | appender_filename: the appender filename
494 | tracker_server: the tracker server assoc array including elements:
495 | ip_addr, port and sock
496 | storage_server: the storage server assoc array including elements:
497 | ip_addr, port and sock
498 | return true for success, false for error
499 |
500 |
501 |
502 | boolean fastdfs_storage_modify_by_filebuff1(string file_buff,
503 | long file_offset, string appender_file_id
504 | [, array tracker_server, array storage_server])
505 | modify appender file by file buff
506 | parameters:
507 | file_buff: the file content
508 | file_offset: offset of appender file
509 | appender_file_id: the appender file id
510 | tracker_server: the tracker server assoc array including elements:
511 | ip_addr, port and sock
512 | storage_server: the storage server assoc array including elements:
513 | ip_addr, port and sock
514 | return true for success, false for error
515 |
516 |
517 |
518 | boolean fastdfs_storage_modify_by_callback(array callback_array,
519 | long file_offset, string group_name, string appender_filename
520 | [, array tracker_server, array storage_server])
521 | modify appender file by callback
522 | parameters:
523 | callback_array: the callback assoc array, must have keys:
524 | callback - the php callback function name
525 | callback function prototype as:
526 | function upload_file_callback($sock, $args)
527 | file_size - the file size
528 | args - use argument for callback function
529 | file_offset: offset of appender file
530 | group_name: the the group name of appender file
531 | appender_filename: the appender filename
532 | tracker_server: the tracker server assoc array including elements:
533 | ip_addr, port and sock
534 | storage_server: the storage server assoc array including elements:
535 | ip_addr, port and sock
536 | return true for success, false for error
537 |
538 |
539 |
540 | boolean fastdfs_storage_modify_by_callback1(array callback_array,
541 | long file_offset, string group_name, string appender_filename
542 | [, array tracker_server, array storage_server])
543 | modify appender file by callback
544 | parameters:
545 | callback_array: the callback assoc array, must have keys:
546 | callback - the php callback function name
547 | callback function prototype as:
548 | function upload_file_callback($sock, $args)
549 | file_size - the file size
550 | args - use argument for callback function
551 | file_offset: offset of appender file
552 | appender_file_id: the appender file id
553 | tracker_server: the tracker server assoc array including elements:
554 | ip_addr, port and sock
555 | storage_server: the storage server assoc array including elements:
556 | ip_addr, port and sock
557 | return true for success, false for error
558 |
559 |
560 |
561 | boolean fastdfs_storage_truncate_file(string group_name,
562 | string appender_filename [, long truncated_file_size = 0,
563 | array tracker_server, array storage_server])
564 | truncate appender file to specify size
565 | parameters:
566 | group_name: the the group name of appender file
567 | appender_filename: the appender filename
568 | truncated_file_size: truncate the file size to
569 | tracker_server: the tracker server assoc array including elements:
570 | ip_addr, port and sock
571 | storage_server: the storage server assoc array including elements:
572 | ip_addr, port and sock
573 | return true for success, false for error
574 |
575 |
576 |
577 | boolean fastdfs_storage_truncate_file1(string appender_file_id
578 | [, long truncated_file_size = 0, array tracker_server,
579 | array storage_server])
580 | truncate appender file to specify size
581 | parameters:
582 | appender_file_id: the appender file id
583 | truncated_file_size: truncate the file size to
584 | tracker_server: the tracker server assoc array including elements:
585 | ip_addr, port and sock
586 | storage_server: the storage server assoc array including elements:
587 | ip_addr, port and sock
588 | return true for success, false for error
589 |
590 |
591 | string/array fastdfs_storage_upload_slave_by_filename(string local_filename,
592 | string group_name, string master_filename, string prefix_name
593 | [, string file_ext_name, array meta_list,
594 | array tracker_server, array storage_server])
595 | upload local file to storage server (slave file mode)
596 | parameters:
597 | file_buff: the file content
598 | group_name: the group name of the master file
599 | master_filename: the master filename to generate the slave file id
600 | prefix_name: the prefix name to generage the slave file id
601 | file_ext_name: the file extension name, do not include dot(.)
602 | meta_list: meta data assoc array, such as
603 | array('width'=>1024, 'height'=>768)
604 | tracker_server: the tracker server assoc array including elements:
605 | ip_addr, port and sock
606 | storage_server: the storage server assoc array including elements:
607 | ip_addr, port and sock
608 | return assoc array for success, false for error.
609 | the returned array includes elements: group_name and filename
610 |
611 |
612 | string fastdfs_storage_upload_slave_by_filename1(string local_filename,
613 | string master_file_id, string prefix_name
614 | [, string file_ext_name, array meta_list,
615 | array tracker_server, array storage_server])
616 | upload local file to storage server (slave file mode)
617 | parameters:
618 | local_filename: the local filename
619 | master_file_id: the master file id to generate the slave file id
620 | prefix_name: the prefix name to generage the slave file id
621 | file_ext_name: the file extension name, do not include dot(.)
622 | meta_list: meta data assoc array, such as
623 | array('width'=>1024, 'height'=>768)
624 | tracker_server: the tracker server assoc array including elements:
625 | ip_addr, port and sock
626 | storage_server: the storage server assoc array including elements:
627 | ip_addr, port and sock
628 | return file_id for success, false for error.
629 |
630 |
631 | array fastdfs_storage_upload_slave_by_filebuff(string file_buff,
632 | string group_name, string master_filename, string prefix_name
633 | [, string file_ext_name, array meta_list,
634 | array tracker_server, array storage_server])
635 | upload file buff to storage server (slave file mode)
636 | parameters:
637 | file_buff: the file content
638 | group_name: the group name of the master file
639 | master_filename: the master filename to generate the slave file id
640 | prefix_name: the prefix name to generage the slave file id
641 | file_ext_name: the file extension name, do not include dot(.)
642 | meta_list: meta data assoc array, such as
643 | array('width'=>1024, 'height'=>768)
644 | tracker_server: the tracker server assoc array including elements:
645 | ip_addr, port and sock
646 | storage_server: the storage server assoc array including elements:
647 | ip_addr, port and sock
648 | return assoc array for success, false for error.
649 | the returned array includes elements: group_name and filename
650 |
651 |
652 | string fastdfs_storage_upload_slave_by_filebuff1(string file_buff,
653 | string master_file_id, string prefix_name
654 | [, string file_ext_name, array meta_list,
655 | array tracker_server, array storage_server])
656 | upload file buff to storage server (slave file mode)
657 | parameters:
658 | file_buff: the file content
659 | master_file_id: the master file id to generate the slave file id
660 | prefix_name: the prefix name to generage the slave file id
661 | file_ext_name: the file extension name, do not include dot(.)
662 | meta_list: meta data assoc array, such as
663 | array('width'=>1024, 'height'=>768)
664 | tracker_server: the tracker server assoc array including elements:
665 | ip_addr, port and sock
666 | storage_server: the storage server assoc array including elements:
667 | ip_addr, port and sock
668 | return file_id for success, false for error
669 |
670 |
671 | array fastdfs_storage_upload_slave_by_callback(array callback_array,
672 | string group_name, string master_filename, string prefix_name
673 | [, string file_ext_name, array meta_list,
674 | array tracker_server, array storage_server])
675 | upload file to storage server by callback (slave file mode)
676 | parameters:
677 | callback_array: the callback assoc array, must have keys:
678 | callback - the php callback function name
679 | callback function prototype as:
680 | function upload_file_callback($sock, $args)
681 | file_size - the file size
682 | args - use argument for callback function
683 | group_name: the group name of the master file
684 | master_filename: the master filename to generate the slave file id
685 | prefix_name: the prefix name to generage the slave file id
686 | file_ext_name: the file extension name, do not include dot(.)
687 | meta_list: meta data assoc array, such as
688 | array('width'=>1024, 'height'=>768)
689 | tracker_server: the tracker server assoc array including elements:
690 | ip_addr, port and sock
691 | storage_server: the storage server assoc array including elements:
692 | ip_addr, port and sock
693 | return assoc array for success, false for error.
694 | the returned array includes elements: group_name and filename
695 |
696 |
697 | string fastdfs_storage_upload_slave_by_callback1(array callback_array,
698 | string master_file_id, string prefix_name
699 | [, string file_ext_name, array meta_list,
700 | array tracker_server, array storage_server])
701 | upload file to storage server by callback (slave file mode)
702 | parameters:
703 | callback_array: the callback assoc array, must have keys:
704 | callback - the php callback function name
705 | callback function prototype as:
706 | function upload_file_callback($sock, $args)
707 | file_size - the file size
708 | args - use argument for callback function
709 | master_file_id: the master file id to generate the slave file id
710 | prefix_name: the prefix name to generage the slave file id
711 | file_ext_name: the file extension name, do not include dot(.)
712 | meta_list: meta data assoc array, such as
713 | array('width'=>1024, 'height'=>768)
714 | tracker_server: the tracker server assoc array including elements:
715 | ip_addr, port and sock
716 | storage_server: the storage server assoc array including elements:
717 | ip_addr, port and sock
718 | return file_id for success, false for error
719 |
720 |
721 | boolean fastdfs_storage_delete_file(string group_name, string remote_filename
722 | [, array tracker_server, array storage_server])
723 | delete file from storage server
724 | parameters:
725 | group_name: the group name of the file
726 | remote_filename: the filename on the storage server
727 | tracker_server: the tracker server assoc array including elements:
728 | ip_addr, port and sock
729 | storage_server: the storage server assoc array including elements:
730 | ip_addr, port and sock
731 | return true for success, false for error
732 |
733 |
734 | boolean fastdfs_storage_delete_file1(string file_id
735 | [, array tracker_server, array storage_server])
736 | delete file from storage server
737 | parameters:
738 | file_id: the file id to be deleted
739 | tracker_server: the tracker server assoc array including elements:
740 | ip_addr, port and sock
741 | storage_server: the storage server assoc array including elements:
742 | ip_addr, port and sock
743 | return true for success, false for error
744 |
745 |
746 | string fastdfs_storage_download_file_to_buff(string group_name,
747 | string remote_filename [, long file_offset, long download_bytes,
748 | array tracker_server, array storage_server])
749 | get file content from storage server
750 | parameters:
751 | group_name: the group name of the file
752 | remote_filename: the filename on the storage server
753 | file_offset: file start offset, default value is 0
754 | download_bytes: 0 (default value) means from the file offset to
755 | the file end
756 | tracker_server: the tracker server assoc array including elements:
757 | ip_addr, port and sock
758 | storage_server: the storage server assoc array including elements:
759 | ip_addr, port and sock
760 | return the file content for success, false for error
761 |
762 |
763 | string fastdfs_storage_download_file_to_buff1(string file_id
764 | [, long file_offset, long download_bytes,
765 | array tracker_server, array storage_server])
766 | get file content from storage server
767 | parameters:
768 | file_id: the file id of the file
769 | file_offset: file start offset, default value is 0
770 | download_bytes: 0 (default value) means from the file offset to
771 | the file end
772 | tracker_server: the tracker server assoc array including elements:
773 | ip_addr, port and sock
774 | storage_server: the storage server assoc array including elements:
775 | ip_addr, port and sock
776 | return the file content for success, false for error
777 |
778 |
779 | boolean fastdfs_storage_download_file_to_file(string group_name,
780 | string remote_filename, string local_filename [, long file_offset,
781 | long download_bytes, array tracker_server, array storage_server])
782 | download file from storage server to local file
783 | parameters:
784 | group_name: the group name of the file
785 | remote_filename: the filename on the storage server
786 | local_filename: the local filename to save the file content
787 | file_offset: file start offset, default value is 0
788 | download_bytes: 0 (default value) means from the file offset to
789 | the file end
790 | tracker_server: the tracker server assoc array including elements:
791 | ip_addr, port and sock
792 | storage_server: the storage server assoc array including elements:
793 | ip_addr, port and sock
794 | return true for success, false for error
795 |
796 |
797 | boolean fastdfs_storage_download_file_to_file1(string file_id,
798 | string local_filename [, long file_offset, long download_bytes,
799 | array tracker_server, array storage_server])
800 | download file from storage server to local file
801 | parameters:
802 | file_id: the file id of the file
803 | local_filename: the local filename to save the file content
804 | file_offset: file start offset, default value is 0
805 | download_bytes: 0 (default value) means from the file offset to
806 | the file end
807 | tracker_server: the tracker server assoc array including elements:
808 | ip_addr, port and sock
809 | storage_server: the storage server assoc array including elements:
810 | ip_addr, port and sock
811 | return true for success, false for error
812 |
813 |
814 | boolean fastdfs_storage_download_file_to_callback(string group_name,
815 | string remote_filename, array download_callback [, long file_offset,
816 | long download_bytes, array tracker_server, array storage_server])
817 | parameters:
818 | group_name: the group name of the file
819 | remote_filename: the filename on the storage server
820 | download_callback: the download callback array, elements as:
821 | callback - the php callback function name
822 | callback function prototype as:
823 | function my_download_file_callback($args, $file_size, $data)
824 | args - use argument for callback function
825 | file_offset: file start offset, default value is 0
826 | download_bytes: 0 (default value) means from the file offset to
827 | the file end
828 | tracker_server: the tracker server assoc array including elements:
829 | ip_addr, port and sock
830 | storage_server: the storage server assoc array including elements:
831 | ip_addr, port and sock
832 | return true for success, false for error
833 |
834 |
835 | boolean fastdfs_storage_download_file_to_callback1(string file_id,
836 | array download_callback [, long file_offset, long download_bytes,
837 | array tracker_server, array storage_server])
838 | parameters:
839 | file_id: the file id of the file
840 | download_callback: the download callback array, elements as:
841 | callback - the php callback function name
842 | callback function prototype as:
843 | function my_download_file_callback($args, $file_size, $data)
844 | args - use argument for callback function
845 | file_offset: file start offset, default value is 0
846 | download_bytes: 0 (default value) means from the file offset to
847 | the file end
848 | tracker_server: the tracker server assoc array including elements:
849 | ip_addr, port and sock
850 | storage_server: the storage server assoc array including elements:
851 | ip_addr, port and sock
852 | return true for success, false for error
853 |
854 |
855 | boolean fastdfs_storage_set_metadata(string group_name, string remote_filename,
856 | array meta_list [, string op_type, array tracker_server,
857 | array storage_server])
858 | set meta data of the file
859 | parameters:
860 | group_name: the group name of the file
861 | remote_filename: the filename on the storage server
862 | meta_list: meta data assoc array to be set, such as
863 | array('width'=>1024, 'height'=>768)
864 | op_type: operate flag, can be one of following flags:
865 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE: combined with the old meta data
866 | FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE: overwrite the old meta data
867 | tracker_server: the tracker server assoc array including elements:
868 | ip_addr, port and sock
869 | storage_server: the storage server assoc array including elements:
870 | ip_addr, port and sock
871 | return true for success, false for error
872 |
873 |
874 | boolean fastdfs_storage_set_metadata1(string file_id, array meta_list
875 | [, string op_type, array tracker_server, array storage_server])
876 | set meta data of the file
877 | parameters:
878 | file_id: the file id of the file
879 | meta_list: meta data assoc array to be set, such as
880 | array('width'=>1024, 'height'=>768)
881 | op_type: operate flag, can be one of following flags:
882 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE: combined with the old meta data
883 | FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE: overwrite the old meta data
884 | tracker_server: the tracker server assoc array including elements:
885 | ip_addr, port and sock
886 | storage_server: the storage server assoc array including elements:
887 | ip_addr, port and sock
888 | return true for success, false for error
889 |
890 |
891 | array fastdfs_storage_get_metadata(string group_name, string remote_filename
892 | [, array tracker_server, array storage_server])
893 | get meta data of the file
894 | parameters:
895 | group_name: the group name of the file
896 | remote_filename: the filename on the storage server
897 | tracker_server: the tracker server assoc array including elements:
898 | ip_addr, port and sock
899 | storage_server: the storage server assoc array including elements:
900 | ip_addr, port and sock
901 | return assoc array for success, false for error
902 | returned array like: array('width' => 1024, 'height' => 768)
903 |
904 |
905 | array fastdfs_storage_get_metadata1(string file_id
906 | [, array tracker_server, array storage_server])
907 | get meta data of the file
908 | parameters:
909 | file_id: the file id of the file
910 | tracker_server: the tracker server assoc array including elements:
911 | ip_addr, port and sock
912 | storage_server: the storage server assoc array including elements:
913 | ip_addr, port and sock
914 | return assoc array for success, false for error
915 | returned array like: array('width' => 1024, 'height' => 768)
916 |
917 |
918 | array fastdfs_connect_server(string ip_addr, int port)
919 | connect to the server
920 | parameters:
921 | ip_addr: the ip address of the server
922 | port: the port of the server
923 | return assoc array for success, false for error
924 |
925 |
926 | boolean fastdfs_disconnect_server(array server_info)
927 | disconnect from the server
928 | parameters:
929 | server_info: the assoc array including elements:
930 | ip_addr, port and sock
931 | return true for success, false for error
932 |
933 |
934 | boolean fastdfs_active_test(array server_info)
935 | send ACTIVE_TEST cmd to the server
936 | parameters:
937 | server_info: the assoc array including elements:
938 | ip_addr, port and sock, sock must be connected
939 | return true for success, false for error
940 |
941 |
942 | array fastdfs_tracker_get_connection()
943 | get a connected tracker server
944 | return assoc array for success, false for error
945 | the assoc array including elements: ip_addr, port and sock
946 |
947 |
948 | boolean fastdfs_tracker_make_all_connections()
949 | connect to all tracker servers
950 | return true for success, false for error
951 |
952 |
953 | boolean fastdfs_tracker_close_all_connections()
954 | close all connections to the tracker servers
955 | return true for success, false for error
956 |
957 |
958 | array fastdfs_tracker_list_groups([string group_name, array tracker_server])
959 | get group stat info
960 | parameters:
961 | group_name: specify the group name, null or empty string means all groups
962 | tracker_server: the tracker server assoc array including elements:
963 | ip_addr, port and sock
964 | return index array for success, false for error, each group as a array element
965 |
966 |
967 | array fastdfs_tracker_query_storage_store([string group_name,
968 | array tracker_server])
969 | get the storage server info to upload file
970 | parameters:
971 | group_name: specify the group name
972 | tracker_server: the tracker server assoc array including elements:
973 | ip_addr, port and sock
974 | return assoc array for success, false for error. the assoc array including
975 | elements: ip_addr, port, sock and store_path_index
976 |
977 |
978 | array fastdfs_tracker_query_storage_store_list([string group_name,
979 | array tracker_server])
980 | get the storage server list to upload file
981 | parameters:
982 | group_name: specify the group name
983 | tracker_server: the tracker server assoc array including elements:
984 | ip_addr, port and sock
985 | return indexed storage server array for success, false for error.
986 | each element is an ssoc array including elements:
987 | ip_addr, port, sock and store_path_index
988 |
989 |
990 | array fastdfs_tracker_query_storage_update(string group_name,
991 | string remote_filename [, array tracker_server])
992 | get the storage server info to set metadata
993 | parameters:
994 | group_name: the group name of the file
995 | remote_filename: the filename on the storage server
996 | tracker_server: the tracker server assoc array including elements:
997 | ip_addr, port and sock
998 | return assoc array for success, false for error
999 | the assoc array including elements: ip_addr, port and sock
1000 |
1001 |
1002 | array fastdfs_tracker_query_storage_update1(string file_id,
1003 | [, array tracker_server])
1004 | get the storage server info to set metadata
1005 | parameters:
1006 | file_id: the file id of the file
1007 | tracker_server: the tracker server assoc array including elements:
1008 | ip_addr, port and sock
1009 | return assoc array for success, false for error
1010 | the assoc array including elements: ip_addr, port and sock
1011 |
1012 |
1013 | array fastdfs_tracker_query_storage_fetch(string group_name,
1014 | string remote_filename [, array tracker_server])
1015 | get the storage server info to download file (or get metadata)
1016 | parameters:
1017 | group_name: the group name of the file
1018 | remote_filename: the filename on the storage server
1019 | tracker_server: the tracker server assoc array including elements:
1020 | ip_addr, port and sock
1021 | return assoc array for success, false for error
1022 | the assoc array including elements: ip_addr, port and sock
1023 |
1024 | array fastdfs_tracker_query_storage_fetch1(string file_id
1025 | [, array tracker_server])
1026 | get the storage server info to download file (or get metadata)
1027 | parameters:
1028 | file_id: the file id of the file
1029 | remote_filename: the filename on the storage server
1030 | tracker_server: the tracker server assoc array including elements:
1031 | ip_addr, port and sock
1032 | return assoc array for success, false for error
1033 | the assoc array including elements: ip_addr, port and sock
1034 |
1035 |
1036 | array fastdfs_tracker_query_storage_list(string group_name,
1037 | string remote_filename [, array tracker_server])
1038 | get the storage server list which can retrieve the file content or metadata
1039 | parameters:
1040 | group_name: the group name of the file
1041 | remote_filename: the filename on the storage server
1042 | tracker_server: the tracker server assoc array including elements:
1043 | ip_addr, port and sock
1044 | return index array for success, false for error.
1045 | each server as an array element
1046 |
1047 |
1048 | array fastdfs_tracker_query_storage_list1(string file_id
1049 | [, array tracker_server])
1050 | get the storage server list which can retrieve the file content or metadata
1051 | parameters:
1052 | file_id: the file id of the file
1053 | remote_filename: the filename on the storage server
1054 | tracker_server: the tracker server assoc array including elements:
1055 | ip_addr, port and sock
1056 | return index array for success, false for error.
1057 | each server as an array element
1058 |
1059 |
1060 | boolean fastdfs_tracker_delete_storage(string group_name, string storage_ip)
1061 | delete the storage server from the cluster
1062 | parameters:
1063 | group_name: the group name of the storage server
1064 | storage_ip: the ip address of the storage server to be deleted
1065 | return true for success, false for error
1066 |
1067 |
1068 | FastDFS Class Info:
1069 |
1070 | class FastDFS([int config_index, boolean bMultiThread]);
1071 | FastDFS class constructor
1072 | params:
1073 | config_index: use which config file, base 0. default is 0
1074 | bMultiThread: if in multi-thread, default is false
1075 |
1076 |
1077 | long FastDFS::get_last_error_no()
1078 | return last error no
1079 |
1080 |
1081 | string FastDFS::get_last_error_info()
1082 | return last error info
1083 |
1084 | bool FastDFS::send_data(int sock, string buff)
1085 | parameters:
1086 | sock: the unix socket description
1087 | buff: the buff to send
1088 | return true for success, false for error
1089 |
1090 |
1091 | string FastDFS::http_gen_token(string remote_filename, int timestamp)
1092 | generate anti-steal token for HTTP download
1093 | parameters:
1094 | remote_filename: the remote filename (do NOT including group name)
1095 | timestamp: the timestamp (unix timestamp)
1096 | return token string for success, false for error
1097 |
1098 |
1099 | array FastDFS::get_file_info(string group_name, string filename)
1100 | get file info from the filename
1101 | parameters:
1102 | group_name: the group name of the file
1103 | remote_filename: the filename on the storage server
1104 | return assoc array for success, false for error.
1105 | the assoc array including following elements:
1106 | create_timestamp: the file create timestamp (unix timestamp)
1107 | file_size: the file size (bytes)
1108 | source_ip_addr: the source storage server ip address
1109 | crc32: the crc32 signature of the file
1110 |
1111 |
1112 | array FastDFS::get_file_info1(string file_id)
1113 | get file info from the file id
1114 | parameters:
1115 | file_id: the file id (including group name and filename) or remote filename
1116 | return assoc array for success, false for error.
1117 | the assoc array including following elements:
1118 | create_timestamp: the file create timestamp (unix timestamp)
1119 | file_size: the file size (bytes)
1120 | source_ip_addr: the source storage server ip address
1121 |
1122 |
1123 | string FastDFS::gen_slave_filename(string master_filename, string prefix_name
1124 | [, string file_ext_name])
1125 | generate slave filename by master filename, prefix name and file extension name
1126 | parameters:
1127 | master_filename: the master filename / file id to generate
1128 | the slave filename
1129 | prefix_name: the prefix name to generate the slave filename
1130 | file_ext_name: slave file extension name, can be null or emtpy
1131 | (do not including dot)
1132 | return slave filename string for success, false for error
1133 |
1134 |
1135 | boolean FastDFS::storage_file_exist(string group_name, string remote_filename
1136 | [, array tracker_server, array storage_server])
1137 | check file exist
1138 | parameters:
1139 | group_name: the group name of the file
1140 | remote_filename: the filename on the storage server
1141 | tracker_server: the tracker server assoc array including elements:
1142 | ip_addr, port and sock
1143 | storage_server: the storage server assoc array including elements:
1144 | ip_addr, port and sock
1145 | return true for exist, false for not exist
1146 |
1147 |
1148 | boolean FastDFS::storage_file_exist1(string file_id
1149 | [, array tracker_server, array storage_server])
1150 | parameters:
1151 | file_id: the file id of the file
1152 | tracker_server: the tracker server assoc array including elements:
1153 | ip_addr, port and sock
1154 | storage_server: the storage server assoc array including elements:
1155 | ip_addr, port and sock
1156 | return true for exist, false for not exist
1157 |
1158 |
1159 | array FastDFS::storage_upload_by_filename(string local_filename
1160 | [, string file_ext_name, array meta_list, string group_name,
1161 | array tracker_server, array storage_server])
1162 | upload local file to storage server
1163 | parameters:
1164 | local_filename: the local filename
1165 | file_ext_name: the file extension name, do not include dot(.)
1166 | meta_list: meta data assoc array, such as
1167 | array('width'=>1024, 'height'=>768)
1168 | group_name: specify the group name to store the file
1169 | tracker_server: the tracker server assoc array including elements:
1170 | ip_addr, port and sock
1171 | storage_server: the storage server assoc array including elements:
1172 | ip_addr, port and sock
1173 | return assoc array for success, false for error.
1174 | the returned array includes elements: group_name and filename
1175 |
1176 |
1177 | string FastDFS::storage_upload_by_filename1(string local_filename
1178 | [, string file_ext_name, array meta_list, string group_name,
1179 | array tracker_server, array storage_server])
1180 | upload local file to storage server
1181 | parameters:
1182 | local_filename: the local filename
1183 | file_ext_name: the file extension name, do not include dot(.)
1184 | meta_list: meta data assoc array, such as
1185 | array('width'=>1024, 'height'=>768)
1186 | group_name: specify the group name to store the file
1187 | tracker_server: the tracker server assoc array including elements:
1188 | ip_addr, port and sock
1189 | storage_server: the storage server assoc array including elements:
1190 | ip_addr, port and sock
1191 | return file_id for success, false for error.
1192 |
1193 |
1194 | array FastDFS::storage_upload_by_filebuff(string file_buff
1195 | [, string file_ext_name, array meta_list, string group_name,
1196 | array tracker_server, array storage_server])
1197 | upload file buff to storage server
1198 | parameters:
1199 | file_buff: the file content
1200 | file_ext_name: the file extension name, do not include dot(.)
1201 | meta_list: meta data assoc array, such as
1202 | array('width'=>1024, 'height'=>768)
1203 | group_name: specify the group name to store the file
1204 | tracker_server: the tracker server assoc array including elements:
1205 | ip_addr, port and sock
1206 | storage_server: the storage server assoc array including elements:
1207 | ip_addr, port and sock
1208 | return assoc array for success, false for error.
1209 | the returned array includes elements: group_name and filename
1210 |
1211 |
1212 | string FastDFS::storage_upload_by_filebuff1(string file_buff
1213 | [, string file_ext_name, array meta_list, string group_name,
1214 | array tracker_server, array storage_server])
1215 | upload file buff to storage server
1216 | parameters:
1217 | file_buff: the file content
1218 | file_ext_name: the file extension name, do not include dot(.)
1219 | meta_list: meta data assoc array, such as
1220 | array('width'=>1024, 'height'=>768)
1221 | group_name: specify the group name to store the file
1222 | tracker_server: the tracker server assoc array including elements:
1223 | ip_addr, port and sock
1224 | storage_server: the storage server assoc array including elements:
1225 | ip_addr, port and sock
1226 | return file_id for success, false for error
1227 |
1228 |
1229 | array FastDFS::storage_upload_by_callback(array callback_array
1230 | [, string file_ext_name, array meta_list, string group_name,
1231 | array tracker_server, array storage_server])
1232 | upload file to storage server by callback
1233 | parameters:
1234 | callback_array: the callback assoc array, must have keys:
1235 | callback - the php callback function name
1236 | callback function prototype as:
1237 | function upload_file_callback($sock, $args)
1238 | file_size - the file size
1239 | args - use argument for callback function
1240 | file_ext_name: the file extension name, do not include dot(.)
1241 | meta_list: meta data assoc array, such as
1242 | array('width'=>1024, 'height'=>768)
1243 | group_name: specify the group name to store the file
1244 | tracker_server: the tracker server assoc array including elements:
1245 | ip_addr, port and sock
1246 | storage_server: the storage server assoc array including elements:
1247 | ip_addr, port and sock
1248 | return assoc array for success, false for error.
1249 | the returned array includes elements: group_name and filename
1250 |
1251 |
1252 | array FastDFS::storage_upload_by_callback1(array callback_array
1253 | [, string file_ext_name, array meta_list, string group_name,
1254 | array tracker_server, array storage_server])
1255 | upload file to storage server by callback
1256 | parameters:
1257 | callback_array: the callback assoc array, must have keys:
1258 | callback - the php callback function name
1259 | callback function prototype as:
1260 | function upload_file_callback($sock, $args)
1261 | file_size - the file size
1262 | args - use argument for callback function
1263 | file_ext_name: the file extension name, do not include dot(.)
1264 | meta_list: meta data assoc array, such as
1265 | array('width'=>1024, 'height'=>768)
1266 | group_name: specify the group name to store the file
1267 | tracker_server: the tracker server assoc array including elements:
1268 | ip_addr, port and sock
1269 | storage_server: the storage server assoc array including elements:
1270 | ip_addr, port and sock
1271 | return file_id for success, false for error
1272 |
1273 |
1274 | array FastDFS::storage_upload_appender_by_filename(string local_filename
1275 | [, string file_ext_name, array meta_list, string group_name,
1276 | array tracker_server, array storage_server])
1277 | upload local file to storage server as appender file
1278 | parameters:
1279 | local_filename: the local filename
1280 | file_ext_name: the file extension name, do not include dot(.)
1281 | meta_list: meta data assoc array, such as
1282 | array('width'=>1024, 'height'=>768)
1283 | group_name: specify the group name to store the file
1284 | tracker_server: the tracker server assoc array including elements:
1285 | ip_addr, port and sock
1286 | storage_server: the storage server assoc array including elements:
1287 | ip_addr, port and sock
1288 | return assoc array for success, false for error.
1289 | the returned array includes elements: group_name and filename
1290 |
1291 |
1292 | string FastDFS::storage_upload_appender_by_filename1(string local_filename
1293 | [, string file_ext_name, array meta_list, string group_name,
1294 | array tracker_server, array storage_server])
1295 | upload local file to storage server as appender file
1296 | parameters:
1297 | local_filename: the local filename
1298 | file_ext_name: the file extension name, do not include dot(.)
1299 | meta_list: meta data assoc array, such as
1300 | array('width'=>1024, 'height'=>768)
1301 | group_name: specify the group name to store the file
1302 | tracker_server: the tracker server assoc array including elements:
1303 | ip_addr, port and sock
1304 | storage_server: the storage server assoc array including elements:
1305 | ip_addr, port and sock
1306 | return file_id for success, false for error.
1307 |
1308 |
1309 | array FastDFS::storage_upload_appender_by_filebuff(string file_buff
1310 | [, string file_ext_name, array meta_list, string group_name,
1311 | array tracker_server, array storage_server])
1312 | upload file buff to storage server as appender file
1313 | parameters:
1314 | file_buff: the file content
1315 | file_ext_name: the file extension name, do not include dot(.)
1316 | meta_list: meta data assoc array, such as
1317 | array('width'=>1024, 'height'=>768)
1318 | group_name: specify the group name to store the file
1319 | tracker_server: the tracker server assoc array including elements:
1320 | ip_addr, port and sock
1321 | storage_server: the storage server assoc array including elements:
1322 | ip_addr, port and sock
1323 | return assoc array for success, false for error.
1324 | the returned array includes elements: group_name and filename
1325 |
1326 |
1327 | string FastDFS::storage_upload_appender_by_filebuff1(string file_buff
1328 | [, string file_ext_name, array meta_list, string group_name,
1329 | array tracker_server, array storage_server])
1330 | upload file buff to storage server as appender file
1331 | parameters:
1332 | file_buff: the file content
1333 | file_ext_name: the file extension name, do not include dot(.)
1334 | meta_list: meta data assoc array, such as
1335 | array('width'=>1024, 'height'=>768)
1336 | group_name: specify the group name to store the file
1337 | tracker_server: the tracker server assoc array including elements:
1338 | ip_addr, port and sock
1339 | storage_server: the storage server assoc array including elements:
1340 | ip_addr, port and sock
1341 | return file_id for success, false for error
1342 |
1343 |
1344 | array FastDFS::storage_upload_appender_by_callback(array callback_array
1345 | [, string file_ext_name, array meta_list, string group_name,
1346 | array tracker_server, array storage_server])
1347 | upload file to storage server by callback as appender file
1348 | parameters:
1349 | callback_array: the callback assoc array, must have keys:
1350 | callback - the php callback function name
1351 | callback function prototype as:
1352 | function upload_file_callback($sock, $args)
1353 | file_size - the file size
1354 | args - use argument for callback function
1355 | file_ext_name: the file extension name, do not include dot(.)
1356 | meta_list: meta data assoc array, such as
1357 | array('width'=>1024, 'height'=>768)
1358 | group_name: specify the group name to store the file
1359 | tracker_server: the tracker server assoc array including elements:
1360 | ip_addr, port and sock
1361 | storage_server: the storage server assoc array including elements:
1362 | ip_addr, port and sock
1363 | return assoc array for success, false for error.
1364 | the returned array includes elements: group_name and filename
1365 |
1366 |
1367 | string FastDFS::storage_upload_appender_by_callback1(array callback_array
1368 | [, string file_ext_name, array meta_list, string group_name,
1369 | array tracker_server, array storage_server])
1370 | upload file to storage server by callback as appender file
1371 | parameters:
1372 | callback_array: the callback assoc array, must have keys:
1373 | callback - the php callback function name
1374 | callback function prototype as:
1375 | function upload_file_callback($sock, $args)
1376 | file_size - the file size
1377 | args - use argument for callback function
1378 | file_ext_name: the file extension name, do not include dot(.)
1379 | meta_list: meta data assoc array, such as
1380 | array('width'=>1024, 'height'=>768)
1381 | group_name: specify the group name to store the file
1382 | tracker_server: the tracker server assoc array including elements:
1383 | ip_addr, port and sock
1384 | storage_server: the storage server assoc array including elements:
1385 | ip_addr, port and sock
1386 | return file_id for success, false for error
1387 |
1388 |
1389 | boolean FastDFS::storage_append_by_filename(string local_filename,
1390 | string group_name, appender_filename
1391 | [, array tracker_server, array storage_server])
1392 | append local file to the appender file of storage server
1393 | parameters:
1394 | local_filename: the local filename
1395 | group_name: the the group name of appender file
1396 | appender_filename: the appender filename
1397 | tracker_server: the tracker server assoc array including elements:
1398 | ip_addr, port and sock
1399 | storage_server: the storage server assoc array including elements:
1400 | ip_addr, port and sock
1401 | return true for success, false for error
1402 |
1403 |
1404 |
1405 | string FastDFS::storage_upload_by_filename1(string local_filename,
1406 | [string appender_file_id, array tracker_server, array storage_server])
1407 | append local file to the appender file of storage server
1408 | parameters:
1409 | local_filename: the local filename
1410 | appender_file_id: the appender file id
1411 | tracker_server: the tracker server assoc array including elements:
1412 | ip_addr, port and sock
1413 | storage_server: the storage server assoc array including elements:
1414 | ip_addr, port and sock
1415 | return true for success, false for error
1416 |
1417 |
1418 |
1419 | boolean FastDFS::storage_append_by_filebuff(string file_buff,
1420 | string group_name, string appender_filename
1421 | [, array tracker_server, array storage_server])
1422 | append file buff to the appender file of storage server
1423 | parameters:
1424 | file_buff: the file content
1425 | group_name: the the group name of appender file
1426 | appender_filename: the appender filename
1427 | tracker_server: the tracker server assoc array including elements:
1428 | ip_addr, port and sock
1429 | storage_server: the storage server assoc array including elements:
1430 | ip_addr, port and sock
1431 | return true for success, false for error
1432 |
1433 |
1434 |
1435 | boolean FastDFS::storage_append_by_filebuff1(string file_buff,
1436 | string appender_file_id [, array tracker_server, array storage_server])
1437 | append file buff to the appender file of storage server
1438 | parameters:
1439 | file_buff: the file content
1440 | appender_file_id: the appender file id
1441 | tracker_server: the tracker server assoc array including elements:
1442 | ip_addr, port and sock
1443 | storage_server: the storage server assoc array including elements:
1444 | ip_addr, port and sock
1445 | return true for success, false for error
1446 |
1447 |
1448 |
1449 | boolean FastDFS::storage_append_by_callback(array callback_array,
1450 | string group_name, string appender_filename
1451 | [, array tracker_server, array storage_server])
1452 | append file to the appender file of storage server by callback
1453 | parameters:
1454 | callback_array: the callback assoc array, must have keys:
1455 | callback - the php callback function name
1456 | callback function prototype as:
1457 | function upload_file_callback($sock, $args)
1458 | file_size - the file size
1459 | args - use argument for callback function
1460 | group_name: the the group name of appender file
1461 | appender_filename: the appender filename
1462 | tracker_server: the tracker server assoc array including elements:
1463 | ip_addr, port and sock
1464 | storage_server: the storage server assoc array including elements:
1465 | ip_addr, port and sock
1466 | return true for success, false for error
1467 |
1468 |
1469 |
1470 | boolean FastDFS::storage_append_by_callback1(array callback_array,
1471 | string appender_file_id [, array tracker_server, array storage_server])
1472 | append file buff to the appender file of storage server
1473 | parameters:
1474 | callback_array: the callback assoc array, must have keys:
1475 | callback - the php callback function name
1476 | callback function prototype as:
1477 | function upload_file_callback($sock, $args)
1478 | file_size - the file size
1479 | args - use argument for callback function
1480 | appender_file_id: the appender file id
1481 | tracker_server: the tracker server assoc array including elements:
1482 | ip_addr, port and sock
1483 | storage_server: the storage server assoc array including elements:
1484 | ip_addr, port and sock
1485 | return true for success, false for error
1486 |
1487 |
1488 |
1489 | boolean FastDFS::storage_modify_by_filename(string local_filename,
1490 | long file_offset, string group_name, appender_filename,
1491 | [array tracker_server, array storage_server])
1492 | modify appender file by local file
1493 | parameters:
1494 | local_filename: the local filename
1495 | file_offset: offset of appender file
1496 | group_name: the the group name of appender file
1497 | appender_filename: the appender filename
1498 | tracker_server: the tracker server assoc array including elements:
1499 | ip_addr, port and sock
1500 | storage_server: the storage server assoc array including elements:
1501 | ip_addr, port and sock
1502 | return true for success, false for error
1503 |
1504 |
1505 |
1506 | boolean FastDFS::storage_modify_by_filename1(string local_filename,
1507 | long file_offset, string appender_file_id
1508 | [, array tracker_server, array storage_server])
1509 | modify appender file by local file
1510 | parameters:
1511 | local_filename: the local filename
1512 | file_offset: offset of appender file
1513 | appender_file_id: the appender file id
1514 | tracker_server: the tracker server assoc array including elements:
1515 | ip_addr, port and sock
1516 | storage_server: the storage server assoc array including elements:
1517 | ip_addr, port and sock
1518 | return true for success, false for error
1519 |
1520 |
1521 |
1522 | boolean FastDFS::storage_modify_by_filebuff(string file_buff,
1523 | long file_offset, string group_name, string appender_filename
1524 | [, array tracker_server, array storage_server])
1525 | modify appender file by file buff
1526 | parameters:
1527 | file_buff: the file content
1528 | file_offset: offset of appender file
1529 | group_name: the the group name of appender file
1530 | appender_filename: the appender filename
1531 | tracker_server: the tracker server assoc array including elements:
1532 | ip_addr, port and sock
1533 | storage_server: the storage server assoc array including elements:
1534 | ip_addr, port and sock
1535 | return true for success, false for error
1536 |
1537 |
1538 |
1539 | boolean FastDFS::storage_modify_by_filebuff1(string file_buff,
1540 | long file_offset, string appender_file_id
1541 | [, array tracker_server, array storage_server])
1542 | modify appender file by file buff
1543 | parameters:
1544 | file_buff: the file content
1545 | file_offset: offset of appender file
1546 | appender_file_id: the appender file id
1547 | tracker_server: the tracker server assoc array including elements:
1548 | ip_addr, port and sock
1549 | storage_server: the storage server assoc array including elements:
1550 | ip_addr, port and sock
1551 | return true for success, false for error
1552 |
1553 |
1554 |
1555 | boolean FastDFS::storage_modify_by_callback(array callback_array,
1556 | long file_offset, string group_name, string appender_filename
1557 | [, array tracker_server, array storage_server])
1558 | modify appender file by callback
1559 | parameters:
1560 | callback_array: the callback assoc array, must have keys:
1561 | callback - the php callback function name
1562 | callback function prototype as:
1563 | function upload_file_callback($sock, $args)
1564 | file_size - the file size
1565 | args - use argument for callback function
1566 | file_offset: offset of appender file
1567 | group_name: the the group name of appender file
1568 | appender_filename: the appender filename
1569 | tracker_server: the tracker server assoc array including elements:
1570 | ip_addr, port and sock
1571 | storage_server: the storage server assoc array including elements:
1572 | ip_addr, port and sock
1573 | return true for success, false for error
1574 |
1575 |
1576 |
1577 | boolean FastDFS::storage_modify_by_callback1(array callback_array,
1578 | long file_offset, string group_name, string appender_filename
1579 | [, array tracker_server, array storage_server])
1580 | modify appender file by callback
1581 | parameters:
1582 | callback_array: the callback assoc array, must have keys:
1583 | callback - the php callback function name
1584 | callback function prototype as:
1585 | function upload_file_callback($sock, $args)
1586 | file_size - the file size
1587 | args - use argument for callback function
1588 | file_offset: offset of appender file
1589 | appender_file_id: the appender file id
1590 | tracker_server: the tracker server assoc array including elements:
1591 | ip_addr, port and sock
1592 | storage_server: the storage server assoc array including elements:
1593 | ip_addr, port and sock
1594 | return true for success, false for error
1595 |
1596 |
1597 |
1598 | boolean FastDFS::storage_truncate_file(string group_name,
1599 | string appender_filename [, long truncated_file_size = 0,
1600 | array tracker_server, array storage_server])
1601 | truncate appender file to specify size
1602 | parameters:
1603 | group_name: the the group name of appender file
1604 | appender_filename: the appender filename
1605 | truncated_file_size: truncate the file size to
1606 | tracker_server: the tracker server assoc array including elements:
1607 | ip_addr, port and sock
1608 | storage_server: the storage server assoc array including elements:
1609 | ip_addr, port and sock
1610 | return true for success, false for error
1611 |
1612 |
1613 |
1614 | boolean FastDFS::storage_truncate_file1(string appender_file_id
1615 | [, long truncated_file_size = 0, array tracker_server,
1616 | array storage_server])
1617 | truncate appender file to specify size
1618 | parameters:
1619 | appender_file_id: the appender file id
1620 | truncated_file_size: truncate the file size to
1621 | tracker_server: the tracker server assoc array including elements:
1622 | ip_addr, port and sock
1623 | storage_server: the storage server assoc array including elements:
1624 | ip_addr, port and sock
1625 | return true for success, false for error
1626 |
1627 |
1628 |
1629 | array FastDFS::storage_upload_slave_by_filename(string local_filename,
1630 | string group_name, string master_filename, string prefix_name
1631 | [, string file_ext_name, array meta_list,
1632 | array tracker_server, array storage_server])
1633 | upload local file to storage server (slave file mode)
1634 | parameters:
1635 | file_buff: the file content
1636 | group_name: the group name of the master file
1637 | master_filename: the master filename to generate the slave file id
1638 | prefix_name: the prefix name to generage the slave file id
1639 | file_ext_name: the file extension name, do not include dot(.)
1640 | meta_list: meta data assoc array, such as
1641 | array('width'=>1024, 'height'=>768)
1642 | tracker_server: the tracker server assoc array including elements:
1643 | ip_addr, port and sock
1644 | storage_server: the storage server assoc array including elements:
1645 | ip_addr, port and sock
1646 | return assoc array for success, false for error.
1647 | the returned array includes elements: group_name and filename
1648 |
1649 |
1650 | string FastDFS::storage_upload_slave_by_filename1(string local_filename,
1651 | string master_file_id, string prefix_name
1652 | [, string file_ext_name, array meta_list,
1653 | array tracker_server, array storage_server])
1654 | upload local file to storage server (slave file mode)
1655 | parameters:
1656 | local_filename: the local filename
1657 | master_file_id: the master file id to generate the slave file id
1658 | prefix_name: the prefix name to generage the slave file id
1659 | file_ext_name: the file extension name, do not include dot(.)
1660 | meta_list: meta data assoc array, such as
1661 | array('width'=>1024, 'height'=>768)
1662 | tracker_server: the tracker server assoc array including elements:
1663 | ip_addr, port and sock
1664 | storage_server: the storage server assoc array including elements:
1665 | ip_addr, port and sock
1666 | return file_id for success, false for error.
1667 |
1668 |
1669 | array FastDFS::storage_upload_slave_by_filebuff(string file_buff,
1670 | string group_name, string master_filename, string prefix_name
1671 | [, file_ext_name, array meta_list,
1672 | array tracker_server, array storage_server])
1673 | upload file buff to storage server (slave file mode)
1674 | parameters:
1675 | file_buff: the file content
1676 | group_name: the group name of the master file
1677 | master_filename: the master filename to generate the slave file id
1678 | prefix_name: the prefix name to generage the slave file id
1679 | file_ext_name: the file extension name, do not include dot(.)
1680 | meta_list: meta data assoc array, such as
1681 | array('width'=>1024, 'height'=>768)
1682 | tracker_server: the tracker server assoc array including elements:
1683 | ip_addr, port and sock
1684 | storage_server: the storage server assoc array including elements:
1685 | ip_addr, port and sock
1686 | return assoc array for success, false for error.
1687 | the returned array includes elements: group_name and filename
1688 |
1689 |
1690 | string FastDFS::storage_upload_slave_by_filebuff1(string file_buff,
1691 | string master_file_id, string prefix_name
1692 | [, string file_ext_name, array meta_list,
1693 | array tracker_server, array storage_server])
1694 | upload file buff to storage server (slave file mode)
1695 | parameters:
1696 | file_buff: the file content
1697 | master_file_id: the master file id to generate the slave file id
1698 | prefix_name: the prefix name to generage the slave file id
1699 | file_ext_name: the file extension name, do not include dot(.)
1700 | meta_list: meta data assoc array, such as
1701 | array('width'=>1024, 'height'=>768)
1702 | tracker_server: the tracker server assoc array including elements:
1703 | ip_addr, port and sock
1704 | storage_server: the storage server assoc array including elements:
1705 | ip_addr, port and sock
1706 | return file_id for success, false for error
1707 |
1708 |
1709 | array FastDFS::storage_upload_slave_by_callback(array callback_array,
1710 | string group_name, string master_filename, string prefix_name
1711 | [, string file_ext_name, array meta_list,
1712 | array tracker_server, array storage_server])
1713 | upload file to storage server by callback (slave file mode)
1714 | parameters:
1715 | callback_array: the callback assoc array, must have keys:
1716 | callback - the php callback function name
1717 | callback function prototype as:
1718 | function upload_file_callback($sock, $args)
1719 | file_size - the file size
1720 | args - use argument for callback function
1721 | group_name: the group name of the master file
1722 | master_filename: the master filename to generate the slave file id
1723 | prefix_name: the prefix name to generage the slave file id
1724 | file_ext_name: the file extension name, do not include dot(.)
1725 | meta_list: meta data assoc array, such as
1726 | array('width'=>1024, 'height'=>768)
1727 | tracker_server: the tracker server assoc array including elements:
1728 | ip_addr, port and sock
1729 | storage_server: the storage server assoc array including elements:
1730 | ip_addr, port and sock
1731 | return assoc array for success, false for error.
1732 | the returned array includes elements: group_name and filename
1733 |
1734 |
1735 | string FastDFS::storage_upload_slave_by_callback1(array callback_array,
1736 | string master_file_id, string prefix_name
1737 | [, string file_ext_name, array meta_list,
1738 | array tracker_server, array storage_server])
1739 | upload file to storage server by callback (slave file mode)
1740 | parameters:
1741 | callback_array: the callback assoc array, must have keys:
1742 | callback - the php callback function name
1743 | callback function prototype as:
1744 | function upload_file_callback($sock, $args)
1745 | file_size - the file size
1746 | args - use argument for callback function
1747 | master_file_id: the master file id to generate the slave file id
1748 | prefix_name: the prefix name to generage the slave file id
1749 | file_ext_name: the file extension name, do not include dot(.)
1750 | meta_list: meta data assoc array, such as
1751 | array('width'=>1024, 'height'=>768)
1752 | tracker_server: the tracker server assoc array including elements:
1753 | ip_addr, port and sock
1754 | storage_server: the storage server assoc array including elements:
1755 | ip_addr, port and sock
1756 | return file_id for success, false for error
1757 |
1758 |
1759 | boolean FastDFS::storage_delete_file(string group_name, string remote_filename
1760 | [, array tracker_server, array storage_server])
1761 | delete file from storage server
1762 | parameters:
1763 | group_name: the group name of the file
1764 | remote_filename: the filename on the storage server
1765 | tracker_server: the tracker server assoc array including elements:
1766 | ip_addr, port and sock
1767 | storage_server: the storage server assoc array including elements:
1768 | ip_addr, port and sock
1769 | return true for success, false for error
1770 |
1771 |
1772 | boolean FastDFS::storage_delete_file1(string file_id
1773 | [, array tracker_server, array storage_server])
1774 | delete file from storage server
1775 | parameters:
1776 | file_id: the file id to be deleted
1777 | tracker_server: the tracker server assoc array including elements:
1778 | ip_addr, port and sock
1779 | storage_server: the storage server assoc array including elements:
1780 | ip_addr, port and sock
1781 | return true for success, false for error
1782 |
1783 |
1784 | string FastDFS::storage_download_file_to_buff(string group_name,
1785 | string remote_filename [, long file_offset, long download_bytes,
1786 | array tracker_server, array storage_server])
1787 | get file content from storage server
1788 | parameters:
1789 | group_name: the group name of the file
1790 | remote_filename: the filename on the storage server
1791 | file_offset: file start offset, default value is 0
1792 | download_bytes: 0 (default value) means from the file offset to
1793 | the file end
1794 | tracker_server: the tracker server assoc array including elements:
1795 | ip_addr, port and sock
1796 | storage_server: the storage server assoc array including elements:
1797 | ip_addr, port and sock
1798 | return the file content for success, false for error
1799 |
1800 |
1801 | string FastDFS::storage_download_file_to_buff1(string file_id
1802 | [, long file_offset, long download_bytes,
1803 | array tracker_server, array storage_server])
1804 | get file content from storage server
1805 | parameters:
1806 | file_id: the file id of the file
1807 | file_offset: file start offset, default value is 0
1808 | download_bytes: 0 (default value) means from the file offset to
1809 | the file end
1810 | tracker_server: the tracker server assoc array including elements:
1811 | ip_addr, port and sock
1812 | storage_server: the storage server assoc array including elements:
1813 | ip_addr, port and sock
1814 | return the file content for success, false for error
1815 |
1816 |
1817 | boolean FastDFS::storage_download_file_to_file(string group_name,
1818 | string remote_filename, string local_filename [, long file_offset,
1819 | long download_bytes, array tracker_server, array storage_server])
1820 | download file from storage server to local file
1821 | parameters:
1822 | group_name: the group name of the file
1823 | remote_filename: the filename on the storage server
1824 | local_filename: the local filename to save the file content
1825 | file_offset: file start offset, default value is 0
1826 | download_bytes: 0 (default value) means from the file offset to
1827 | the file end
1828 | tracker_server: the tracker server assoc array including elements:
1829 | ip_addr, port and sock
1830 | storage_server: the storage server assoc array including elements:
1831 | ip_addr, port and sock
1832 | return true for success, false for error
1833 |
1834 |
1835 | boolean FastDFS::storage_download_file_to_file1(string file_id,
1836 | string local_filename [, long file_offset, long download_bytes,
1837 | array tracker_server, array storage_server])
1838 | download file from storage server to local file
1839 | parameters:
1840 | file_id: the file id of the file
1841 | local_filename: the local filename to save the file content
1842 | file_offset: file start offset, default value is 0
1843 | download_bytes: 0 (default value) means from the file offset to
1844 | the file end
1845 | tracker_server: the tracker server assoc array including elements:
1846 | ip_addr, port and sock
1847 | storage_server: the storage server assoc array including elements:
1848 | ip_addr, port and sock
1849 | return true for success, false for error
1850 |
1851 |
1852 | boolean FastDFS::storage_download_file_to_callback(string group_name,
1853 | string remote_filename, array download_callback [, long file_offset,
1854 | long download_bytes, array tracker_server, array storage_server])
1855 | parameters:
1856 | group_name: the group name of the file
1857 | remote_filename: the filename on the storage server
1858 | download_callback: the download callback array, elements as:
1859 | callback - the php callback function name
1860 | callback function prototype as:
1861 | function my_download_file_callback($args, $file_size, $data)
1862 | args - use argument for callback function
1863 | file_offset: file start offset, default value is 0
1864 | download_bytes: 0 (default value) means from the file offset to
1865 | the file end
1866 | tracker_server: the tracker server assoc array including elements:
1867 | ip_addr, port and sock
1868 | storage_server: the storage server assoc array including elements:
1869 | ip_addr, port and sock
1870 | return true for success, false for error
1871 |
1872 |
1873 | boolean FastDFS::storage_download_file_to_callback1(string file_id,
1874 | array download_callback [, long file_offset, long download_bytes,
1875 | array tracker_server, array storage_server])
1876 | parameters:
1877 | file_id: the file id of the file
1878 | download_callback: the download callback array, elements as:
1879 | callback - the php callback function name
1880 | callback function prototype as:
1881 | function my_download_file_callback($args, $file_size, $data)
1882 | args - use argument for callback function
1883 | file_offset: file start offset, default value is 0
1884 | download_bytes: 0 (default value) means from the file offset to
1885 | the file end
1886 | tracker_server: the tracker server assoc array including elements:
1887 | ip_addr, port and sock
1888 | storage_server: the storage server assoc array including elements:
1889 | ip_addr, port and sock
1890 | return true for success, false for error
1891 |
1892 |
1893 | boolean FastDFS::storage_set_metadata(string group_name, string remote_filename,
1894 | array meta_list [, string op_type, array tracker_server,
1895 | array storage_server])
1896 | set meta data of the file
1897 | parameters:
1898 | group_name: the group name of the file
1899 | remote_filename: the filename on the storage server
1900 | meta_list: meta data assoc array to be set, such as
1901 | array('width'=>1024, 'height'=>768)
1902 | op_type: operate flag, can be one of following flags:
1903 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE: combined with the old meta data
1904 | FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE: overwrite the old meta data
1905 | tracker_server: the tracker server assoc array including elements:
1906 | ip_addr, port and sock
1907 | storage_server: the storage server assoc array including elements:
1908 | ip_addr, port and sock
1909 | return true for success, false for error
1910 |
1911 |
1912 | boolean FastDFS::storage_set_metadata1(string file_id, array meta_list
1913 | [, string op_type, array tracker_server, array storage_server])
1914 | set meta data of the file
1915 | parameters:
1916 | file_id: the file id of the file
1917 | meta_list: meta data assoc array to be set, such as
1918 | array('width'=>1024, 'height'=>768)
1919 | op_type: operate flag, can be one of following flags:
1920 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE: combined with the old meta data
1921 | FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE: overwrite the old meta data
1922 | tracker_server: the tracker server assoc array including elements:
1923 | ip_addr, port and sock
1924 | storage_server: the storage server assoc array including elements:
1925 | ip_addr, port and sock
1926 | return true for success, false for error
1927 |
1928 |
1929 | array FastDFS::storage_get_metadata(string group_name, string remote_filename
1930 | [, array tracker_server, array storage_server])
1931 | get meta data of the file
1932 | parameters:
1933 | group_name: the group name of the file
1934 | remote_filename: the filename on the storage server
1935 | tracker_server: the tracker server assoc array including elements:
1936 | ip_addr, port and sock
1937 | storage_server: the storage server assoc array including elements:
1938 | ip_addr, port and sock
1939 | return assoc array for success, false for error
1940 | returned array like: array('width' => 1024, 'height' => 768)
1941 |
1942 |
1943 | array FastDFS::storage_get_metadata1(string file_id
1944 | [, array tracker_server, array storage_server])
1945 | get meta data of the file
1946 | parameters:
1947 | file_id: the file id of the file
1948 | tracker_server: the tracker server assoc array including elements:
1949 | ip_addr, port and sock
1950 | storage_server: the storage server assoc array including elements:
1951 | ip_addr, port and sock
1952 | return assoc array for success, false for error
1953 | returned array like: array('width' => 1024, 'height' => 768)
1954 |
1955 |
1956 | array FastDFS::connect_server(string ip_addr, int port)
1957 | connect to the server
1958 | parameters:
1959 | ip_addr: the ip address of the server
1960 | port: the port of the server
1961 | return assoc array for success, false for error
1962 |
1963 |
1964 | boolean FastDFS::disconnect_server(array server_info)
1965 | disconnect from the server
1966 | parameters:
1967 | server_info: the assoc array including elements:
1968 | ip_addr, port and sock
1969 | return true for success, false for error
1970 |
1971 |
1972 | array FastDFS::tracker_get_connection()
1973 | get a connected tracker server
1974 | return assoc array for success, false for error
1975 | the assoc array including elements: ip_addr, port and sock
1976 |
1977 |
1978 | boolean FastDFS::active_test(array server_info)
1979 | send ACTIVE_TEST cmd to the server
1980 | parameters:
1981 | server_info: the assoc array including elements:
1982 | ip_addr, port and sock, sock must be connected
1983 | return true for success, false for error
1984 |
1985 |
1986 | boolean FastDFS::tracker_make_all_connections()
1987 | connect to all tracker servers
1988 | return true for success, false for error
1989 |
1990 |
1991 | boolean FastDFS::tracker_close_all_connections()
1992 | close all connections to the tracker servers
1993 | return true for success, false for error
1994 |
1995 |
1996 | array FastDFS::tracker_list_groups([string group_name, array tracker_server])
1997 | get group stat info
1998 | parameters:
1999 | group_name: specify the group name, null or empty string means all groups
2000 | tracker_server: the tracker server assoc array including elements:
2001 | ip_addr, port and sock
2002 | return index array for success, false for error, each group as a array element
2003 |
2004 |
2005 | array FastDFS::tracker_query_storage_store([string group_name,
2006 | array tracker_server])
2007 | get the storage server info to upload file
2008 | parameters:
2009 | group_name: specify the group name
2010 | tracker_server: the tracker server assoc array including elements:
2011 | ip_addr, port and sock
2012 | return assoc array for success, false for error. the assoc array including
2013 | elements: ip_addr, port, sock and store_path_index
2014 |
2015 |
2016 | array FastDFS::tracker_query_storage_store_list([string group_name,
2017 | array tracker_server])
2018 | get the storage server list to upload file
2019 | parameters:
2020 | group_name: specify the group name
2021 | tracker_server: the tracker server assoc array including elements:
2022 | ip_addr, port and sock
2023 | return indexed storage server array for success, false for error.
2024 | each element is an ssoc array including elements:
2025 | ip_addr, port, sock and store_path_index
2026 |
2027 |
2028 | array FastDFS::tracker_query_storage_update(string group_name,
2029 | string remote_filename [, array tracker_server])
2030 | get the storage server info to set metadata
2031 | parameters:
2032 | group_name: the group name of the file
2033 | remote_filename: the filename on the storage server
2034 | tracker_server: the tracker server assoc array including elements:
2035 | ip_addr, port and sock
2036 | return assoc array for success, false for error
2037 | the assoc array including elements: ip_addr, port and sock
2038 |
2039 |
2040 | array FastDFS::tracker_query_storage_update1(string file_id,
2041 | [, array tracker_server])
2042 | get the storage server info to set metadata
2043 | parameters:
2044 | file_id: the file id of the file
2045 | tracker_server: the tracker server assoc array including elements:
2046 | ip_addr, port and sock
2047 | return assoc array for success, false for error
2048 | the assoc array including elements: ip_addr, port and sock
2049 |
2050 |
2051 | array FastDFS::tracker_query_storage_fetch(string group_name,
2052 | string remote_filename [, array tracker_server])
2053 | get the storage server info to download file (or get metadata)
2054 | parameters:
2055 | group_name: the group name of the file
2056 | remote_filename: the filename on the storage server
2057 | tracker_server: the tracker server assoc array including elements:
2058 | ip_addr, port and sock
2059 | return assoc array for success, false for error
2060 | the assoc array including elements: ip_addr, port and sock
2061 |
2062 | array FastDFS::tracker_query_storage_fetch1(string file_id
2063 | [, array tracker_server])
2064 | get the storage server info to download file (or get metadata)
2065 | parameters:
2066 | file_id: the file id of the file
2067 | remote_filename: the filename on the storage server
2068 | tracker_server: the tracker server assoc array including elements:
2069 | ip_addr, port and sock
2070 | return assoc array for success, false for error
2071 | the assoc array including elements: ip_addr, port and sock
2072 |
2073 |
2074 | array FastDFS::tracker_query_storage_list(string group_name,
2075 | string remote_filename [, array tracker_server])
2076 | get the storage server list which can retrieve the file content or metadata
2077 | parameters:
2078 | group_name: the group name of the file
2079 | remote_filename: the filename on the storage server
2080 | tracker_server: the tracker server assoc array including elements:
2081 | ip_addr, port and sock
2082 | return index array for success, false for error.
2083 | each server as an array element
2084 |
2085 |
2086 | array FastDFS::tracker_query_storage_list1(string file_id
2087 | [, array tracker_server])
2088 | get the storage server list which can retrieve the file content or metadata
2089 | parameters:
2090 | file_id: the file id of the file
2091 | remote_filename: the filename on the storage server
2092 | tracker_server: the tracker server assoc array including elements:
2093 | ip_addr, port and sock
2094 | return index array for success, false for error.
2095 | each server as an array element
2096 |
2097 |
2098 | boolean FastDFS::tracker_delete_storage(string group_name, string storage_ip)
2099 | delete the storage server from the cluster
2100 | parameters:
2101 | group_name: the group name of the storage server
2102 | storage_ip: the ip address of the storage server to be deleted
2103 | return true for success, false for error
2104 |
2105 | void FastDFS::close()
2106 | close tracker connections
2107 |
2108 |
--------------------------------------------------------------------------------
/php_client/config.m4:
--------------------------------------------------------------------------------
1 | dnl config.m4 for extension fastdfs_client
2 |
3 | PHP_ARG_WITH(fastdfs_client, for fastdfs_client support FastDFS client,
4 | [ --with-fastdfs_client Include fastdfs_client support FastDFS client])
5 |
6 | if test "$PHP_FASTDFS_CLIENT" != "no"; then
7 | PHP_SUBST(FASTDFS_CLIENT_SHARED_LIBADD)
8 |
9 | if test -z "$ROOT"; then
10 | ROOT=/usr
11 | fi
12 |
13 | PHP_ADD_INCLUDE($ROOT/include/fastcommon)
14 | PHP_ADD_INCLUDE($ROOT/include/fastdfs)
15 |
16 | PHP_ADD_LIBRARY_WITH_PATH(fastcommon, $ROOT/lib, FASTDFS_CLIENT_SHARED_LIBADD)
17 | PHP_ADD_LIBRARY_WITH_PATH(fdfsclient, $ROOT/lib, FASTDFS_CLIENT_SHARED_LIBADD)
18 |
19 | PHP_NEW_EXTENSION(fastdfs_client, fastdfs_client.c, $ext_shared)
20 |
21 | CFLAGS="$CFLAGS -Wall"
22 | fi
23 |
--------------------------------------------------------------------------------
/php_client/fastdfs_appender_test.php:
--------------------------------------------------------------------------------
1 | storage_upload_appender_by_filename("/usr/include/stdio.h");
48 | if (!$file_info)
49 | {
50 | echo "$fdfs->storage_upload_appender_by_filename fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
51 | exit;
52 | }
53 |
54 | $group_name = $file_info['group_name'];
55 | $remote_filename = $file_info['filename'];
56 |
57 | var_dump($file_info);
58 | $file_id = "$group_name/$remote_filename";
59 | var_dump($fdfs->get_file_info($group_name, $remote_filename));
60 |
61 | $appender_filename = $remote_filename;
62 | echo "file id: $group_name/$appender_filename\n";
63 | if (!$fdfs->storage_append_by_filename("/usr/include/stdlib.h", $group_name, $appender_filename))
64 | {
65 | echo "$fdfs->storage_append_by_filename fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
66 | exit;
67 | }
68 |
69 | var_dump($fdfs->get_file_info($group_name, $appender_filename));
70 |
71 | if (!$fdfs->storage_modify_by_filename("/usr/include/stdlib.h", 0, $group_name, $appender_filename))
72 | {
73 | echo "$fdfs->storage_modify_by_filename fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
74 | exit;
75 | }
76 |
77 | var_dump($fdfs->get_file_info($group_name, $appender_filename));
78 |
79 | if (!$fdfs->storage_truncate_file($group_name, $appender_filename))
80 | {
81 | echo "$fdfs->storage_truncate_file fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
82 | exit;
83 | }
84 |
85 | var_dump($fdfs->get_file_info($group_name, $appender_filename));
86 |
87 | echo 'tracker_close_all_connections result: ' . $fdfs->tracker_close_all_connections() . "\n";
88 | ?>
89 |
--------------------------------------------------------------------------------
/php_client/fastdfs_appender_test1.php:
--------------------------------------------------------------------------------
1 | storage_upload_appender_by_filename1("/usr/include/stdio.h");
42 | if (!$appender_file_id)
43 | {
44 | echo "\$fdfs->storage_upload_appender_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
45 | exit;
46 | }
47 |
48 | var_dump($appender_file_id);
49 | var_dump($fdfs->get_file_info1($appender_file_id));
50 |
51 | if (!$fdfs->storage_append_by_filename1("/usr/include/stdlib.h", $appender_file_id))
52 | {
53 | echo "\$fdfs->storage_append_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
54 | exit;
55 | }
56 |
57 | var_dump($fdfs->get_file_info1($appender_file_id));
58 |
59 | if (!$fdfs->storage_modify_by_filename1("/usr/include/stdlib.h", 0, $appender_file_id))
60 | {
61 | echo "\$fdfs->storage_modify_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
62 | exit;
63 | }
64 |
65 | var_dump($fdfs->get_file_info1($appender_file_id));
66 |
67 | if (!$fdfs->storage_truncate_file1($appender_file_id))
68 | {
69 | echo "\$fdfs->torage_truncate_file1 torage_modify_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
70 | exit;
71 | }
72 |
73 | var_dump($fdfs->get_file_info1($appender_file_id));
74 |
75 | echo 'tracker_close_all_connections result: ' . $fdfs->tracker_close_all_connections() . "\n";
76 | ?>
77 |
--------------------------------------------------------------------------------
/php_client/fastdfs_callback_test.php:
--------------------------------------------------------------------------------
1 | FILE_BUFF);
7 | $upload_callback_array = array(
8 | 'callback' => 'my_upload_file_callback',
9 | 'file_size' => strlen(FILE_BUFF),
10 | 'args' => $upload_callback_arg);
11 |
12 | $download_callback_arg = array (
13 | 'filename' => '/tmp/out.txt',
14 | 'write_bytes' => 0,
15 | 'fhandle' => NULL
16 | );
17 | $download_callback_array = array(
18 | 'callback' => 'my_download_file_callback',
19 | 'args' => &$download_callback_arg);
20 |
21 | $file_info = fastdfs_storage_upload_by_callback($upload_callback_array);
22 | if ($file_info)
23 | {
24 | $group_name = $file_info['group_name'];
25 | $remote_filename = $file_info['filename'];
26 |
27 | var_dump($file_info);
28 | var_dump(fastdfs_get_file_info($group_name, $remote_filename));
29 |
30 | fastdfs_storage_download_file_to_callback($group_name, $remote_filename, $download_callback_array);
31 | }
32 | else
33 | {
34 | echo "upload file fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
35 | }
36 |
37 | $file_id = fastdfs_storage_upload_by_callback1($upload_callback_array, 'txt');
38 | if ($file_id)
39 | {
40 | var_dump($file_id);
41 | $download_callback_arg['filename'] = '/tmp/out1.txt';
42 | fastdfs_storage_download_file_to_callback1($file_id, $download_callback_array);
43 | }
44 | else
45 | {
46 | echo "upload file fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
47 | }
48 |
49 | $fdfs = new FastDFS();
50 | $file_info = $fdfs->storage_upload_by_callback($upload_callback_array, 'txt');
51 | if ($file_info)
52 | {
53 | $group_name = $file_info['group_name'];
54 | $remote_filename = $file_info['filename'];
55 |
56 | var_dump($file_info);
57 | var_dump($fdfs->get_file_info($group_name, $remote_filename));
58 | $download_callback_arg['filename'] = '/tmp/fdfs_out.txt';
59 | $fdfs->storage_download_file_to_callback($group_name, $remote_filename, $download_callback_array);
60 | }
61 | else
62 | {
63 | echo "upload file fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
64 | }
65 |
66 | $file_id = $fdfs->storage_upload_by_callback1($upload_callback_array, 'txt');
67 | if ($file_id)
68 | {
69 | var_dump($file_id);
70 | $download_callback_arg['filename'] = '/tmp/fdfs_out1.txt';
71 | $fdfs->storage_download_file_to_callback1($file_id, $download_callback_array);
72 | }
73 | else
74 | {
75 | echo "upload file fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
76 | }
77 |
78 | function my_upload_file_callback($sock, $args)
79 | {
80 | //var_dump($args);
81 |
82 | $ret = fastdfs_send_data($sock, $args['buff']);
83 | return $ret;
84 | }
85 |
86 | function my_download_file_callback($args, $file_size, $data)
87 | {
88 | //var_dump($args);
89 |
90 | if ($args['fhandle'] == NULL)
91 | {
92 | $args['fhandle'] = fopen ($args['filename'], 'w');
93 | if (!$args['fhandle'])
94 | {
95 | echo 'open file: ' . $args['filename'] . " fail!\n";
96 | return false;
97 | }
98 | }
99 |
100 | $len = strlen($data);
101 | if (fwrite($args['fhandle'], $data, $len) === false)
102 | {
103 | echo 'write to file: ' . $args['filename'] . " fail!\n";
104 | $result = false;
105 | }
106 | else
107 | {
108 | $args['write_bytes'] += $len;
109 | $result = true;
110 | }
111 |
112 | if ((!$result) || $args['write_bytes'] >= $file_size)
113 | {
114 | fclose($args['fhandle']);
115 | $args['fhandle'] = NULL;
116 | $args['write_bytes'] = 0;
117 | }
118 |
119 | return $result;
120 | }
121 | ?>
122 |
--------------------------------------------------------------------------------
/php_client/fastdfs_client.h:
--------------------------------------------------------------------------------
1 | #ifndef FASTDFS_CLIENT_H
2 | #define FASTDFS_CLIENT_H
3 |
4 | #ifdef __cplusplus
5 | extern "C" {
6 | #endif
7 |
8 | #ifdef PHP_WIN32
9 | #define PHP_FASTDFS_API __declspec(dllexport)
10 | #else
11 | #define PHP_FASTDFS_API
12 | #endif
13 |
14 | PHP_MINIT_FUNCTION(fastdfs_client);
15 | PHP_RINIT_FUNCTION(fastdfs_client);
16 | PHP_MSHUTDOWN_FUNCTION(fastdfs_client);
17 | PHP_RSHUTDOWN_FUNCTION(fastdfs_client);
18 | PHP_MINFO_FUNCTION(fastdfs_client);
19 |
20 | ZEND_FUNCTION(fastdfs_client_version);
21 | ZEND_FUNCTION(fastdfs_active_test);
22 | ZEND_FUNCTION(fastdfs_connect_server);
23 | ZEND_FUNCTION(fastdfs_disconnect_server);
24 | ZEND_FUNCTION(fastdfs_get_last_error_no);
25 | ZEND_FUNCTION(fastdfs_get_last_error_info);
26 |
27 | ZEND_FUNCTION(fastdfs_tracker_get_connection);
28 | ZEND_FUNCTION(fastdfs_tracker_make_all_connections);
29 | ZEND_FUNCTION(fastdfs_tracker_close_all_connections);
30 | ZEND_FUNCTION(fastdfs_tracker_list_groups);
31 | ZEND_FUNCTION(fastdfs_tracker_query_storage_store);
32 | ZEND_FUNCTION(fastdfs_tracker_query_storage_store_list);
33 | ZEND_FUNCTION(fastdfs_tracker_query_storage_update);
34 | ZEND_FUNCTION(fastdfs_tracker_query_storage_fetch);
35 | ZEND_FUNCTION(fastdfs_tracker_query_storage_list);
36 | ZEND_FUNCTION(fastdfs_tracker_query_storage_update1);
37 | ZEND_FUNCTION(fastdfs_tracker_query_storage_fetch1);
38 | ZEND_FUNCTION(fastdfs_tracker_query_storage_list1);
39 | ZEND_FUNCTION(fastdfs_tracker_delete_storage);
40 | ZEND_FUNCTION(fastdfs_storage_upload_by_filename);
41 | ZEND_FUNCTION(fastdfs_storage_upload_by_filename1);
42 | ZEND_FUNCTION(fastdfs_storage_upload_by_filebuff);
43 | ZEND_FUNCTION(fastdfs_storage_upload_by_filebuff1);
44 | ZEND_FUNCTION(fastdfs_storage_upload_by_callback);
45 | ZEND_FUNCTION(fastdfs_storage_upload_by_callback1);
46 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_filename);
47 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_filename1);
48 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_filebuff);
49 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_filebuff1);
50 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_callback);
51 | ZEND_FUNCTION(fastdfs_storage_upload_appender_by_callback1);
52 | ZEND_FUNCTION(fastdfs_storage_delete_file);
53 | ZEND_FUNCTION(fastdfs_storage_delete_file1);
54 | ZEND_FUNCTION(fastdfs_storage_download_file_to_buff);
55 | ZEND_FUNCTION(fastdfs_storage_download_file_to_buff1);
56 | ZEND_FUNCTION(fastdfs_storage_download_file_to_file);
57 | ZEND_FUNCTION(fastdfs_storage_download_file_to_file1);
58 | ZEND_FUNCTION(fastdfs_storage_download_file_to_callback);
59 | ZEND_FUNCTION(fastdfs_storage_download_file_to_callback1);
60 | ZEND_FUNCTION(fastdfs_storage_set_metadata);
61 | ZEND_FUNCTION(fastdfs_storage_set_metadata1);
62 | ZEND_FUNCTION(fastdfs_storage_get_metadata);
63 | ZEND_FUNCTION(fastdfs_storage_get_metadata1);
64 | ZEND_FUNCTION(fastdfs_http_gen_token);
65 | ZEND_FUNCTION(fastdfs_get_file_info);
66 | ZEND_FUNCTION(fastdfs_get_file_info1);
67 | ZEND_FUNCTION(fastdfs_storage_file_exist);
68 | ZEND_FUNCTION(fastdfs_storage_file_exist1);
69 | ZEND_FUNCTION(fastdfs_gen_slave_filename);
70 | ZEND_FUNCTION(fastdfs_send_data);
71 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_filename);
72 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_filename1);
73 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_filebuff);
74 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_filebuff1);
75 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_callback);
76 | ZEND_FUNCTION(fastdfs_storage_upload_slave_by_callback1);
77 | ZEND_FUNCTION(fastdfs_storage_append_by_filename);
78 | ZEND_FUNCTION(fastdfs_storage_append_by_filename1);
79 | ZEND_FUNCTION(fastdfs_storage_append_by_filebuff);
80 | ZEND_FUNCTION(fastdfs_storage_append_by_filebuff1);
81 | ZEND_FUNCTION(fastdfs_storage_append_by_callback);
82 | ZEND_FUNCTION(fastdfs_storage_append_by_callback1);
83 | ZEND_FUNCTION(fastdfs_storage_modify_by_filename);
84 | ZEND_FUNCTION(fastdfs_storage_modify_by_filename1);
85 | ZEND_FUNCTION(fastdfs_storage_modify_by_filebuff);
86 | ZEND_FUNCTION(fastdfs_storage_modify_by_filebuff1);
87 | ZEND_FUNCTION(fastdfs_storage_modify_by_callback);
88 | ZEND_FUNCTION(fastdfs_storage_modify_by_callback1);
89 | ZEND_FUNCTION(fastdfs_storage_truncate_file);
90 | ZEND_FUNCTION(fastdfs_storage_truncate_file1);
91 |
92 | PHP_FASTDFS_API zend_class_entry *php_fdfs_get_ce(void);
93 | PHP_FASTDFS_API zend_class_entry *php_fdfs_get_exception(void);
94 | PHP_FASTDFS_API zend_class_entry *php_fdfs_get_exception_base(int root TSRMLS_DC);
95 |
96 | #ifdef __cplusplus
97 | }
98 | #endif
99 |
100 | #endif /* FASTDFS_CLIENT_H */
101 |
--------------------------------------------------------------------------------
/php_client/fastdfs_client.ini:
--------------------------------------------------------------------------------
1 | extension = fastdfs_client.so
2 |
3 | ; the base path
4 | fastdfs_client.base_path = /tmp
5 |
6 | ; connect timeout in seconds
7 | ; default value is 30s
8 | fastdfs_client.connect_timeout = 2
9 |
10 | ; network timeout in seconds
11 | ; default value is 30s
12 | fastdfs_client.network_timeout = 60
13 |
14 | ; standard log level as syslog, case insensitive, value list:
15 | ;;; emerg for emergency
16 | ;;; alert
17 | ;;; crit for critical
18 | ;;; error
19 | ;;; warn for warning
20 | ;;; notice
21 | ;;; info
22 | ;;; debug
23 | fastdfs_client.log_level = info
24 |
25 | ; set the log filename, such as /usr/local/fastdfs/logs/fastdfs_client.log
26 | ; empty for output to stderr
27 | fastdfs_client.log_filename =
28 |
29 | ; secret key to generate anti-steal token
30 | ; this parameter must be set when http.anti_steal.check_token set to true
31 | ; the length of the secret key should not exceed 128 bytes
32 | fastdfs_client.http.anti_steal_secret_key =
33 |
34 | ; FastDFS cluster count, default value is 1
35 | fastdfs_client.tracker_group_count = 1
36 |
37 | ; config file of FastDFS cluster ;, based 0
38 | ; must include absolute path, such as fastdfs_client.tracker_group0
39 | ; the config file is same as conf/client.conf
40 | fastdfs_client.tracker_group0 = /etc/fdfs/client.conf
41 |
42 | ; if use connection pool
43 | ; default value is false
44 | ; since V4.05
45 | fastdfs_client.use_connection_pool = true
46 |
47 | ; connections whose the idle time exceeds this time will be closed
48 | ; unit: second
49 | ; default value is 3600
50 | ; since V4.05
51 | fastdfs_client.connection_pool_max_idle_time = 3600
52 |
53 |
--------------------------------------------------------------------------------
/php_client/fastdfs_client.spec.in:
--------------------------------------------------------------------------------
1 | %define php_inidir %(php --ini | head -n 1 | awk -F ':' '{print $2;}' | sed 's/ //g')
2 | %define php_extdir %(php-config --extension-dir 2>/dev/null)
3 | Name: fastdfs_client
4 | Version: 5.0.8
5 | Release: 1%{?dist}
6 | Summary: The php extension of fastdfs client
7 | License: GPL
8 | Group: Arch/Tech
9 | URL: http://perso.orange.fr/sebastien.godard/
10 | Source: http://perso.orange.fr/sebastien.godard/%{name}-%{version}.tar.gz
11 |
12 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
13 |
14 | #Requires: /sbin/chkconfig
15 | #Requires: sh-utils textutils grep fileutils /etc/cron.d
16 | #BuildRequires: libfdfsclient-devel
17 | #Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id
18 | Requires: libfdfsclient
19 |
20 | %description
21 | This package provides the php extension for fastdfs client
22 |
23 | %prep
24 | %setup -q
25 |
26 | %build
27 | # FIXME: I need to fix the upstream Makefile to use LIBDIR et al. properly and
28 | # send the upstream maintainer a patch.
29 | # add DOCDIR to the configure part
30 | phpize
31 | %configure
32 | make
33 |
34 | %install
35 | rm -rf %{buildroot}
36 |
37 | mkdir -p %{buildroot}%{php_extdir}
38 | mkdir -p %{buildroot}%{php_inidir}/php.d
39 | cp -f .libs/fastdfs_client.so %{buildroot}%{php_extdir}
40 | cp -f fastdfs_client.ini %{buildroot}%{php_inidir}/php.d/fastdfs_client.ini.sample
41 |
42 | #make install IGNORE_MAN_GROUP=y DOC_DIR=%{_docdir}/%{name}-%{version} INIT_DIR=%{_initrddir}
43 |
44 | #install -m 0644 sysstat.crond %{buildroot}/%{_sysconfdir}/cron.d/sysstat
45 |
46 | #%find_lang %{name}
47 |
48 | %post
49 |
50 | %preun
51 |
52 | %postun
53 |
54 | %clean
55 | #rm -rf %{buildroot}
56 |
57 | %files
58 | %defattr(-,root,root,-)
59 | %{php_extdir}/*
60 | %{php_inidir}/php.d/*
61 |
62 | %changelog
63 | * Mon Jun 23 2014 Zaixue Liao
64 | - first RPM release (1.0)
65 |
--------------------------------------------------------------------------------
/php_client/fastdfs_test.php:
--------------------------------------------------------------------------------
1 | 1024, 'height'=>800, 'font'=>'Aris', 'Homepage' => true, 'price' => 103.75, 'status' => FDFS_STORAGE_STATUS_ACTIVE), '', $tracker, $storage);
91 | if ($file_id)
92 | {
93 | $master_file_id = $file_id;
94 | $prefix_name = '.part2';
95 | $slave_file_id = fastdfs_storage_upload_slave_by_filename1("/usr/include/stdio.h",
96 | $master_file_id, $prefix_name);
97 | if ($slave_file_id !== false)
98 | {
99 | var_dump($slave_file_id);
100 |
101 | $generated_file_id = fastdfs_gen_slave_filename($master_file_id, $prefix_name);
102 | if ($slave_file_id != $generated_file_id)
103 | {
104 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
105 | }
106 |
107 | echo "delete file $slave_file_id return: " . fastdfs_storage_delete_file1($slave_file_id) . "\n";
108 | }
109 | else
110 | {
111 | echo "fastdfs_storage_upload_slave_by_filename1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
112 | }
113 |
114 | echo "delete file $file_id return: " . fastdfs_storage_delete_file1($file_id) . "\n";
115 | }
116 |
117 | $file_info = fastdfs_storage_upload_by_filebuff("this is a test.", "txt");
118 | if ($file_info)
119 | {
120 | $group_name = $file_info['group_name'];
121 | $remote_filename = $file_info['filename'];
122 |
123 | var_dump($file_info);
124 | var_dump(fastdfs_get_file_info($group_name, $remote_filename));
125 | echo "file exist: " . fastdfs_storage_file_exist($group_name, $remote_filename) . "\n";
126 |
127 | $ts = time();
128 | $token = fastdfs_http_gen_token($remote_filename, $ts);
129 | echo "token=$token\n";
130 |
131 | $file_content = fastdfs_storage_download_file_to_buff($file_info['group_name'], $file_info['filename']);
132 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
133 | $local_filename = 't1.txt';
134 | echo 'storage_download_file_to_file result: ' .
135 | fastdfs_storage_download_file_to_file($file_info['group_name'], $file_info['filename'], $local_filename) . "\n";
136 |
137 | echo "fastdfs_storage_set_metadata result: " . fastdfs_storage_set_metadata(
138 | $file_info['group_name'], $file_info['filename'],
139 | array('color'=>'', 'size'=>32, 'font'=>'MS Serif'), FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE) . "\n";
140 |
141 | $meta_list = fastdfs_storage_get_metadata($file_info['group_name'], $file_info['filename']);
142 | var_dump($meta_list);
143 |
144 | $master_filename = $remote_filename;
145 | $prefix_name = '.part1';
146 | $file_ext_name = 'txt';
147 | $slave_file_info = fastdfs_storage_upload_slave_by_filebuff('this is slave file.',
148 | $group_name, $master_filename, $prefix_name, $file_ext_name);
149 | if ($slave_file_info !== false)
150 | {
151 | var_dump($slave_file_info);
152 |
153 | $generated_filename = fastdfs_gen_slave_filename($master_filename, $prefix_name, $file_ext_name);
154 | if ($slave_file_info['filename'] != $generated_filename)
155 | {
156 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
157 | }
158 |
159 | echo "delete slave file return: " . fastdfs_storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
160 | }
161 | else
162 | {
163 | echo "fastdfs_storage_upload_slave_by_filebuff fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
164 | }
165 |
166 | echo "delete file return: " . fastdfs_storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
167 | }
168 |
169 | $file_id = fastdfs_storage_upload_by_filebuff1("this\000is\000a\000test.", "bin",
170 | array('width'=>1024, 'height'=>768, 'font'=>'Aris'));
171 | if ($file_id)
172 | {
173 | $file_content = fastdfs_storage_download_file_to_buff1($file_id);
174 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
175 | $local_filename = 't2.txt';
176 | echo 'storage_download_file_to_file1 result: ' .
177 | fastdfs_storage_download_file_to_file1($file_id, $local_filename) . "\n";
178 | echo "fastdfs_storage_set_metadata1 result: " . fastdfs_storage_set_metadata1(
179 | $file_id, array('color'=>'yellow', 'size'=>'1234567890', 'font'=>'MS Serif'),
180 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE) . "\n";
181 | $meta_list = fastdfs_storage_get_metadata1($file_id);
182 | var_dump($meta_list);
183 |
184 | $master_file_id = $file_id;
185 | $prefix_name = '.part2';
186 | $file_ext_name = 'txt';
187 | $slave_file_id = fastdfs_storage_upload_slave_by_filebuff1('this is slave file1.',
188 | $master_file_id, $prefix_name, $file_ext_name);
189 | if ($slave_file_id !== false)
190 | {
191 | var_dump($slave_file_id);
192 |
193 | $generated_file_id = fastdfs_gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
194 | if ($slave_file_id != $generated_file_id)
195 | {
196 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
197 | }
198 |
199 | echo "delete file $slave_file_id return: " . fastdfs_storage_delete_file1($slave_file_id) . "\n";
200 | }
201 | else
202 | {
203 | echo "fastdfs_storage_upload_slave_by_filebuff1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
204 | }
205 |
206 | echo "delete file $file_id return: " . fastdfs_storage_delete_file1($file_id) . "\n";
207 | }
208 |
209 | var_dump(fastdfs_tracker_query_storage_update($group_name, $remote_filename));
210 | var_dump(fastdfs_tracker_query_storage_fetch($group_name, $remote_filename));
211 | var_dump(fastdfs_tracker_query_storage_list($group_name, $remote_filename));
212 | var_dump(fastdfs_tracker_query_storage_update1($file_id));
213 | var_dump(fastdfs_tracker_query_storage_fetch1($file_id, $tracker));
214 | var_dump(fastdfs_tracker_query_storage_list1($file_id, $tracker));
215 |
216 | echo "fastdfs_tracker_close_all_connections result: " . fastdfs_tracker_close_all_connections() . "\n";
217 |
218 | $fdfs = new FastDFS();
219 | echo 'tracker_make_all_connections result: ' . $fdfs->tracker_make_all_connections() . "\n";
220 | $tracker = $fdfs->tracker_get_connection();
221 | var_dump($tracker);
222 |
223 | $server = $fdfs->connect_server($tracker['ip_addr'], $tracker['port']);
224 | var_dump($server);
225 | var_dump($fdfs->disconnect_server($server));
226 |
227 | var_dump($fdfs->tracker_query_storage_store_list());
228 |
229 | //var_dump($fdfs->tracker_list_groups());
230 | //var_dump($fdfs->tracker_query_storage_store());
231 | //var_dump($fdfs->tracker_query_storage_update($group_name, $remote_filename));
232 | //var_dump($fdfs->tracker_query_storage_fetch($group_name, $remote_filename));
233 | //var_dump($fdfs->tracker_query_storage_list($group_name, $remote_filename));
234 |
235 | var_dump($fdfs->tracker_query_storage_update1($file_id));
236 | var_dump($fdfs->tracker_query_storage_fetch1($file_id));
237 | var_dump($fdfs->tracker_query_storage_list1($file_id));
238 |
239 | $file_info = $fdfs->storage_upload_by_filename("/usr/include/stdio.h");
240 | if ($file_info)
241 | {
242 | $group_name = $file_info['group_name'];
243 | $remote_filename = $file_info['filename'];
244 |
245 | var_dump($file_info);
246 | var_dump($fdfs->get_file_info($group_name, $remote_filename));
247 | echo "file exist: " . $fdfs->storage_file_exist($group_name, $remote_filename) . "\n";
248 |
249 | $master_filename = $remote_filename;
250 | $prefix_name = '.part1';
251 | $slave_file_info = $fdfs->storage_upload_slave_by_filename("/usr/include/stdio.h",
252 | $group_name, $master_filename, $prefix_name);
253 | if ($slave_file_info !== false)
254 | {
255 | var_dump($slave_file_info);
256 |
257 | $generated_filename = $fdfs->gen_slave_filename($master_filename, $prefix_name);
258 | if ($slave_file_info['filename'] != $generated_filename)
259 | {
260 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
261 | }
262 |
263 | echo "delete slave file return: " . $fdfs->storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
264 | }
265 | else
266 | {
267 | echo "storage_upload_slave_by_filename fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
268 | }
269 |
270 | echo "delete file return: " . $fdfs->storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
271 | }
272 |
273 | $file_ext_name = 'c';
274 | $file_id = $fdfs->storage_upload_by_filename1("/usr/include/stdio.h", $file_ext_name, array('width'=>1024, 'height'=>800, 'font'=>'Aris'));
275 | if ($file_id)
276 | {
277 | $master_file_id = $file_id;
278 | $prefix_name = '.part2';
279 | $slave_file_id = $fdfs->storage_upload_slave_by_filename1("/usr/include/stdio.h",
280 | $master_file_id, $prefix_name, $file_ext_name);
281 | if ($slave_file_id !== false)
282 | {
283 | var_dump($slave_file_id);
284 |
285 | $generated_file_id = $fdfs->gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
286 | if ($slave_file_id != $generated_file_id)
287 | {
288 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
289 | }
290 |
291 | echo "delete file $slave_file_id return: " . $fdfs->storage_delete_file1($slave_file_id) . "\n";
292 | }
293 | else
294 | {
295 | echo "fastdfs_storage_upload_slave_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
296 | }
297 |
298 | echo "delete file $file_id return: " . $fdfs->storage_delete_file1($file_id) . "\n";
299 | }
300 |
301 | $file_info = $fdfs->storage_upload_by_filebuff("", "txt");
302 | if ($file_info)
303 | {
304 | var_dump($file_info);
305 | $file_content = $fdfs->storage_download_file_to_buff($file_info['group_name'], $file_info['filename']);
306 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
307 | $local_filename = 't3.txt';
308 | echo 'storage_download_file_to_file result: ' .
309 | $fdfs->storage_download_file_to_file($file_info['group_name'], $file_info['filename'], $local_filename) . "\n";
310 |
311 | echo "storage_set_metadata result: " . $fdfs->storage_set_metadata(
312 | $file_info['group_name'], $file_info['filename'],
313 | array('color'=>'yellow', 'size'=>32), FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE) . "\n";
314 |
315 | $meta_list = $fdfs->storage_get_metadata($file_info['group_name'], $file_info['filename']);
316 | var_dump($meta_list);
317 |
318 | $master_filename = $file_info['filename'];
319 | $prefix_name = '.part1';
320 | $file_ext_name = 'txt';
321 | $slave_file_info = $fdfs->storage_upload_slave_by_filebuff('this is slave file 1 by class.',
322 | $file_info['group_name'], $master_filename, $prefix_name, $file_ext_name);
323 | if ($slave_file_info !== false)
324 | {
325 | var_dump($slave_file_info);
326 |
327 | $generated_filename = $fdfs->gen_slave_filename($master_filename, $prefix_name, $file_ext_name);
328 | if ($slave_file_info['filename'] != $generated_filename)
329 | {
330 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
331 | }
332 |
333 | echo "delete slave file return: " . $fdfs->storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
334 | }
335 | else
336 | {
337 | echo "storage_upload_slave_by_filebuff fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
338 | }
339 |
340 | echo "delete file return: " . $fdfs->storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
341 | }
342 |
343 | $file_id = $fdfs->storage_upload_by_filebuff1("this\000is\001a\002test.", "bin",
344 | array('color'=>'none', 'size'=>0, 'font'=>'Aris'));
345 | if ($file_id)
346 | {
347 | var_dump($fdfs->get_file_info1($file_id));
348 | echo "file exist: " . $fdfs->storage_file_exist1($file_id) . "\n";
349 |
350 | $ts = time();
351 | $token = $fdfs->http_gen_token($file_id, $ts);
352 | echo "token=$token\n";
353 |
354 | $file_content = $fdfs->storage_download_file_to_buff1($file_id);
355 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
356 | $local_filename = 't4.txt';
357 | echo 'storage_download_file_to_file1 result: ' . $fdfs->storage_download_file_to_file1($file_id, $local_filename) . "\n";
358 | echo "storage_set_metadata1 result: " . $fdfs->storage_set_metadata1(
359 | $file_id, array('color'=>'yellow', 'size'=>32), FDFS_STORAGE_SET_METADATA_FLAG_MERGE) . "\n";
360 |
361 | $master_file_id = $file_id;
362 | $prefix_name = '.part2';
363 | $file_ext_name = 'txt';
364 | $slave_file_id = $fdfs->storage_upload_slave_by_filebuff1('this is slave file 2 by class.',
365 | $master_file_id, $prefix_name, $file_ext_name);
366 | if ($slave_file_id !== false)
367 | {
368 | var_dump($slave_file_id);
369 |
370 | $generated_file_id = $fdfs->gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
371 | if ($slave_file_id != $generated_file_id)
372 | {
373 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
374 | }
375 |
376 | echo "delete file $slave_file_id return: " . $fdfs->storage_delete_file1($slave_file_id) . "\n";
377 | }
378 | else
379 | {
380 | echo "storage_upload_slave_by_filebuff1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
381 | }
382 |
383 | $meta_list = $fdfs->storage_get_metadata1($file_id);
384 | if ($meta_list !== false)
385 | {
386 | var_dump($meta_list);
387 | }
388 | else
389 | {
390 | echo "errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
391 | }
392 |
393 | echo "delete file $file_id return: " . $fdfs->storage_delete_file1($file_id) . "\n";
394 | }
395 |
396 | var_dump($fdfs->active_test($tracker));
397 | echo 'tracker_close_all_connections result: ' . $fdfs->tracker_close_all_connections() . "\n";
398 | ?>
399 |
--------------------------------------------------------------------------------
/php_client/fastdfs_test1.php:
--------------------------------------------------------------------------------
1 | 1024, 'heigth'=>768, 'color'=>'red');
6 | $file_info = fastdfs_storage_upload_slave_by_filebuff("/usr/include/stdio.h", 'group1', 'M00/01/14/wKgAxU5n9gUIAAAAAAAD8uiojuUAAAAEgP_8YAAAAQK66492', '_100x100', 'h', $meta_list);
7 | if ($file_info)
8 | {
9 | var_dump($file_info);
10 | $group_name = $file_info['group_name'];
11 | $remote_filename = $file_info['filename'];
12 | }
13 | else
14 | {
15 | $group_name = '';
16 | $remote_filename = '';
17 | }
18 |
19 | //$result = fastdfs_storage_set_metadata1($group_name, $remote_filename,
20 | // $meta_list, FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE);
21 | // echo "fastdfs_storage_set_metadata result: $result\n";
22 |
23 | var_dump(fastdfs_storage_get_metadata($group_name, $remote_filename));
24 | error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
25 | */
26 |
27 | /*
28 | $file_id = $group_name . FDFS_FILE_ID_SEPERATOR . 'M00/00/02/wKjRbExc_qIAAAAAAABtNw6hsnM56585.part2.c';
29 |
30 | var_dump(fastdfs_get_file_info1($file_id));
31 | exit(1);
32 | */
33 |
34 | echo 'fastdfs_tracker_make_all_connections result: ' . fastdfs_tracker_make_all_connections() . "\n";
35 | var_dump(fastdfs_tracker_list_groups());
36 |
37 | $tracker = fastdfs_tracker_get_connection();
38 | var_dump($tracker);
39 |
40 | if (!fastdfs_active_test($tracker))
41 | {
42 | error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
43 | exit(1);
44 | }
45 |
46 | $server = fastdfs_connect_server($tracker['ip_addr'], $tracker['port']);
47 | var_dump($server);
48 | var_dump(fastdfs_disconnect_server($server));
49 | var_dump($server);
50 |
51 | var_dump(fastdfs_tracker_query_storage_store_list());
52 |
53 | $storage = fastdfs_tracker_query_storage_store();
54 | if (!$storage)
55 | {
56 | error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
57 | exit(1);
58 | }
59 |
60 | $server = fastdfs_connect_server($storage['ip_addr'], $storage['port']);
61 | if (!$server)
62 | {
63 | error_log("errno1: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
64 | exit(1);
65 | }
66 | if (!fastdfs_active_test($server))
67 | {
68 | error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
69 | exit(1);
70 | }
71 |
72 | //var_dump(fastdfs_tracker_list_groups($tracker));
73 | $storage['sock'] = $server['sock'];
74 | $file_info = fastdfs_storage_upload_by_filename("/usr/include/stdio.h", null, array(), null, $tracker, $storage);
75 | if (!$file_info)
76 | {
77 | echo "fastdfs_storage_upload_by_filename fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
78 | }
79 | else
80 | {
81 | $group_name = $file_info['group_name'];
82 | $remote_filename = $file_info['filename'];
83 |
84 | var_dump($file_info);
85 | $finfo = fastdfs_get_file_info($group_name, $remote_filename);
86 | if (!$finfo)
87 | {
88 | echo "fastdfs_get_file_info fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
89 | }
90 | else
91 | {
92 | var_dump($finfo);
93 | }
94 |
95 | $master_filename = $remote_filename;
96 | $prefix_name = '.part1';
97 | $slave_file_info = fastdfs_storage_upload_slave_by_filename("/usr/include/stdio.h",
98 | $group_name, $master_filename, $prefix_name);
99 | if ($slave_file_info !== false)
100 | {
101 | var_dump($slave_file_info);
102 |
103 | $generated_filename = fastdfs_gen_slave_filename($master_filename, $prefix_name);
104 | if ($slave_file_info['filename'] != $generated_filename)
105 | {
106 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
107 | }
108 |
109 | echo "delete slave file return: " . fastdfs_storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
110 | }
111 | else
112 | {
113 | echo "fastdfs_storage_upload_slave_by_filename fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
114 | }
115 |
116 | echo "delete file return: " . fastdfs_storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
117 | }
118 |
119 | $file_id = fastdfs_storage_upload_by_filename1("/usr/include/stdio.h", null, array('width'=>1024, 'height'=>800, 'font'=>'Aris', 'Homepage' => true, 'price' => 103.75, 'status' => FDFS_STORAGE_STATUS_ACTIVE), '', $tracker, $storage);
120 | fastdfs_disconnect_server($storage);
121 | if (!$file_id)
122 | {
123 | echo "fastdfs_storage_upload_by_filename1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
124 | }
125 | else
126 | {
127 | $master_file_id = $file_id;
128 | $prefix_name = '.part2';
129 | $slave_file_id = fastdfs_storage_upload_slave_by_filename1("/usr/include/stdio.h",
130 | $master_file_id, $prefix_name);
131 | if ($slave_file_id !== false)
132 | {
133 | var_dump($slave_file_id);
134 |
135 | $generated_file_id = fastdfs_gen_slave_filename($master_file_id, $prefix_name);
136 | if ($slave_file_id != $generated_file_id)
137 | {
138 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
139 | }
140 |
141 | echo "delete file $slave_file_id return: " . fastdfs_storage_delete_file1($slave_file_id) . "\n";
142 | }
143 | else
144 | {
145 | echo "fastdfs_storage_upload_slave_by_filename1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
146 | }
147 |
148 | echo "delete file $file_id return: " . fastdfs_storage_delete_file1($file_id) . "\n";
149 | }
150 |
151 | $file_info = fastdfs_storage_upload_by_filebuff("this is a test.", "txt");
152 | if (!$file_info)
153 | {
154 | echo "fastdfs_storage_upload_by_filebuff fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
155 | }
156 | else
157 | {
158 | var_dump($file_info);
159 | $group_name = $file_info['group_name'];
160 | $remote_filename = $file_info['filename'];
161 |
162 | var_dump(fastdfs_get_file_info($group_name, $remote_filename));
163 |
164 | $ts = time();
165 | $token = fastdfs_http_gen_token($remote_filename, $ts);
166 | echo "token=$token\n";
167 |
168 | $file_content = fastdfs_storage_download_file_to_buff($file_info['group_name'], $file_info['filename']);
169 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
170 | $local_filename = 't1.txt';
171 | echo 'storage_download_file_to_file result: ' .
172 | fastdfs_storage_download_file_to_file($file_info['group_name'], $file_info['filename'], $local_filename) . "\n";
173 |
174 | echo "fastdfs_storage_set_metadata result: " . fastdfs_storage_set_metadata(
175 | $file_info['group_name'], $file_info['filename'],
176 | array('color'=>'', 'size'=>32, 'font'=>'MS Serif'), FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE) . "\n";
177 |
178 | $meta_list = fastdfs_storage_get_metadata($file_info['group_name'], $file_info['filename']);
179 | var_dump($meta_list);
180 |
181 | $master_filename = $remote_filename;
182 | $prefix_name = '.part1';
183 | $file_ext_name = 'txt';
184 | $slave_file_info = fastdfs_storage_upload_slave_by_filebuff('this is slave file.',
185 | $group_name, $master_filename, $prefix_name, $file_ext_name);
186 | if ($slave_file_info !== false)
187 | {
188 | var_dump($slave_file_info);
189 |
190 | $generated_filename = fastdfs_gen_slave_filename($master_filename, $prefix_name, $file_ext_name);
191 | if ($slave_file_info['filename'] != $generated_filename)
192 | {
193 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
194 | }
195 |
196 | echo "delete slave file return: " . fastdfs_storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
197 | }
198 | else
199 | {
200 | echo "fastdfs_storage_upload_slave_by_filebuff fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
201 | }
202 |
203 | echo "delete file return: " . fastdfs_storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
204 | }
205 |
206 | $file_id = fastdfs_storage_upload_by_filebuff1("this\000is\000a\000test.", "bin",
207 | array('width'=>1024, 'height'=>768, 'font'=>'Aris'));
208 | if (!$file_id)
209 | {
210 | echo "fastdfs_storage_upload_by_filebuff1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
211 | }
212 | else
213 | {
214 | $file_content = fastdfs_storage_download_file_to_buff1($file_id);
215 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
216 | $local_filename = 't2.txt';
217 | echo 'storage_download_file_to_file1 result: ' .
218 | fastdfs_storage_download_file_to_file1($file_id, $local_filename) . "\n";
219 | echo "fastdfs_storage_set_metadata1 result: " . fastdfs_storage_set_metadata1(
220 | $file_id, array('color'=>'yellow', 'size'=>'1234567890', 'font'=>'MS Serif'),
221 | FDFS_STORAGE_SET_METADATA_FLAG_MERGE) . "\n";
222 | $meta_list = fastdfs_storage_get_metadata1($file_id);
223 | var_dump($meta_list);
224 |
225 | $master_file_id = $file_id;
226 | $prefix_name = '.part2';
227 | $file_ext_name = 'txt';
228 | $slave_file_id = fastdfs_storage_upload_slave_by_filebuff1('this is slave file1.',
229 | $master_file_id, $prefix_name, $file_ext_name);
230 | if ($slave_file_id !== false)
231 | {
232 | var_dump($slave_file_id);
233 |
234 | $generated_file_id = fastdfs_gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
235 | if ($slave_file_id != $generated_file_id)
236 | {
237 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
238 | }
239 |
240 | echo "delete file $slave_file_id return: " . fastdfs_storage_delete_file1($slave_file_id) . "\n";
241 | }
242 | else
243 | {
244 | echo "fastdfs_storage_upload_slave_by_filebuff1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
245 | }
246 |
247 | echo "delete file $file_id return: " . fastdfs_storage_delete_file1($file_id) . "\n";
248 | }
249 |
250 |
251 | var_dump(fastdfs_tracker_query_storage_update($group_name, $remote_filename));
252 | var_dump(fastdfs_tracker_query_storage_fetch($group_name, $remote_filename));
253 | var_dump(fastdfs_tracker_query_storage_list($group_name, $remote_filename));
254 | var_dump(fastdfs_tracker_query_storage_update1($file_id));
255 | var_dump(fastdfs_tracker_query_storage_fetch1($file_id, $tracker));
256 | var_dump(fastdfs_tracker_query_storage_list1($file_id, $tracker));
257 |
258 | echo "fastdfs_tracker_close_all_connections result: " . fastdfs_tracker_close_all_connections() . "\n";
259 | $fdfs = new FastDFS();
260 | echo 'tracker_make_all_connections result: ' . $fdfs->tracker_make_all_connections() . "\n";
261 | $tracker = $fdfs->tracker_get_connection();
262 | var_dump($tracker);
263 |
264 | $server = $fdfs->connect_server($tracker['ip_addr'], $tracker['port']);
265 | var_dump($server);
266 | var_dump($fdfs->disconnect_server($server));
267 |
268 | var_dump($fdfs->tracker_query_storage_store_list());
269 |
270 | //var_dump($fdfs->tracker_list_groups());
271 | //var_dump($fdfs->tracker_query_storage_store());
272 | //var_dump($fdfs->tracker_query_storage_update($group_name, $remote_filename));
273 | //var_dump($fdfs->tracker_query_storage_fetch($group_name, $remote_filename));
274 | //var_dump($fdfs->tracker_query_storage_list($group_name, $remote_filename));
275 |
276 | var_dump($fdfs->tracker_query_storage_update1($file_id));
277 | var_dump($fdfs->tracker_query_storage_fetch1($file_id));
278 | var_dump($fdfs->tracker_query_storage_list1($file_id));
279 |
280 | $file_info = $fdfs->storage_upload_by_filename("/usr/include/stdio.h");
281 | if (!$file_info)
282 | {
283 | echo "storage_upload_by_filename fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
284 | }
285 | else
286 | {
287 | $group_name = $file_info['group_name'];
288 | $remote_filename = $file_info['filename'];
289 |
290 | var_dump($file_info);
291 | var_dump($fdfs->get_file_info($group_name, $remote_filename));
292 |
293 | $master_filename = $remote_filename;
294 | $prefix_name = '.part1';
295 | $slave_file_info = $fdfs->storage_upload_slave_by_filename("/usr/include/stdio.h",
296 | $group_name, $master_filename, $prefix_name);
297 | if ($slave_file_info !== false)
298 | {
299 | var_dump($slave_file_info);
300 |
301 | $generated_filename = $fdfs->gen_slave_filename($master_filename, $prefix_name);
302 | if ($slave_file_info['filename'] != $generated_filename)
303 | {
304 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
305 | }
306 |
307 | echo "delete slave file return: " . $fdfs->storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
308 | }
309 | else
310 | {
311 | echo "storage_upload_slave_by_filename fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
312 | }
313 |
314 | echo "delete file return: " . $fdfs->storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
315 | }
316 |
317 | $file_ext_name = 'c';
318 | $file_id = $fdfs->storage_upload_by_filename1("/usr/include/stdio.h", $file_ext_name, array('width'=>1024, 'height'=>800, 'font'=>'Aris'));
319 | if (!$file_id)
320 | {
321 | echo "storage_upload_by_filename1 fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
322 | }
323 | else
324 | {
325 | $master_file_id = $file_id;
326 | $prefix_name = '.part2';
327 | $slave_file_id = $fdfs->storage_upload_slave_by_filename1("/usr/include/stdio.h",
328 | $master_file_id, $prefix_name, $file_ext_name);
329 | if ($slave_file_id !== false)
330 | {
331 | var_dump($slave_file_id);
332 |
333 | $generated_file_id = $fdfs->gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
334 | if ($slave_file_id != $generated_file_id)
335 | {
336 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
337 | }
338 |
339 | $result = $fdfs->storage_delete_file1($slave_file_id);
340 | echo "delete file $slave_file_id return: $result\n";
341 | }
342 | else
343 | {
344 | echo "storage_upload_slave_by_filename1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
345 | }
346 |
347 | echo "delete file $file_id return: " . $fdfs->storage_delete_file1($file_id) . "\n";
348 | }
349 |
350 | $file_info = $fdfs->storage_upload_by_filebuff("", "txt");
351 | if ($file_info)
352 | {
353 | var_dump($file_info);
354 | $file_content = $fdfs->storage_download_file_to_buff($file_info['group_name'], $file_info['filename']);
355 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
356 | $local_filename = 't3.txt';
357 | echo 'storage_download_file_to_file result: ' .
358 | $fdfs->storage_download_file_to_file($file_info['group_name'], $file_info['filename'], $local_filename) . "\n";
359 |
360 | echo "storage_set_metadata result: " . $fdfs->storage_set_metadata(
361 | $file_info['group_name'], $file_info['filename'],
362 | array('color'=>'yellow', 'size'=>32), FDFS_STORAGE_SET_METADATA_FLAG_OVERWRITE) . "\n";
363 |
364 | $meta_list = $fdfs->storage_get_metadata($file_info['group_name'], $file_info['filename']);
365 | var_dump($meta_list);
366 |
367 | $master_filename = $file_info['filename'];
368 | $prefix_name = '.part1';
369 | $file_ext_name = 'txt';
370 | $slave_file_info = $fdfs->storage_upload_slave_by_filebuff('this is slave file 1 by class.',
371 | $file_info['group_name'], $master_filename, $prefix_name, $file_ext_name);
372 | if ($slave_file_info !== false)
373 | {
374 | var_dump($slave_file_info);
375 |
376 | $generated_filename = $fdfs->gen_slave_filename($master_filename, $prefix_name, $file_ext_name);
377 | if ($slave_file_info['filename'] != $generated_filename)
378 | {
379 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
380 | }
381 |
382 | echo "delete slave file return: " . $fdfs->storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
383 | }
384 | else
385 | {
386 | echo "storage_upload_slave_by_filebuff fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
387 | }
388 |
389 | echo "delete file return: " . $fdfs->storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
390 | }
391 |
392 | $file_id = $fdfs->storage_upload_by_filebuff1("this\000is\001a\002test.", "bin",
393 | array('color'=>'none', 'size'=>0, 'font'=>'Aris'));
394 | if ($file_id)
395 | {
396 | var_dump($fdfs->get_file_info1($file_id));
397 |
398 | $ts = time();
399 | $token = $fdfs->http_gen_token($file_id, $ts);
400 | echo "token=$token\n";
401 |
402 | $file_content = $fdfs->storage_download_file_to_buff1($file_id);
403 | echo "file content: " . $file_content . "(" . strlen($file_content) . ")\n";
404 | $local_filename = 't4.txt';
405 | echo 'storage_download_file_to_file1 result: ' . $fdfs->storage_download_file_to_file1($file_id, $local_filename) . "\n";
406 | echo "storage_set_metadata1 result: " . $fdfs->storage_set_metadata1(
407 | $file_id, array('color'=>'yellow', 'size'=>32), FDFS_STORAGE_SET_METADATA_FLAG_MERGE) . "\n";
408 |
409 | $master_file_id = $file_id;
410 | $prefix_name = '.part2';
411 | $file_ext_name = 'txt';
412 | $slave_file_id = $fdfs->storage_upload_slave_by_filebuff1('this is slave file 2 by class.',
413 | $master_file_id, $prefix_name, $file_ext_name);
414 | if ($slave_file_id !== false)
415 | {
416 | var_dump($slave_file_id);
417 |
418 | $generated_file_id = $fdfs->gen_slave_filename($master_file_id, $prefix_name, $file_ext_name);
419 | if ($slave_file_id != $generated_file_id)
420 | {
421 | echo "${slave_file_id}\n != \n${generated_file_id}\n";
422 | }
423 |
424 | echo "delete file $slave_file_id return: " . $fdfs->storage_delete_file1($slave_file_id) . "\n";
425 | }
426 | else
427 | {
428 | echo "storage_upload_slave_by_filebuff1 fail, errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
429 | }
430 |
431 | $meta_list = $fdfs->storage_get_metadata1($file_id);
432 | if ($meta_list !== false)
433 | {
434 | var_dump($meta_list);
435 | }
436 | else
437 | {
438 | echo "errno: " . $fdfs->get_last_error_no() . ", error info: " . $fdfs->get_last_error_info() . "\n";
439 | }
440 |
441 | echo "delete file $file_id return: " . $fdfs->storage_delete_file1($file_id) . "\n";
442 | }
443 |
444 | var_dump($fdfs->active_test($tracker));
445 | echo 'tracker_close_all_connections result: ' . $fdfs->tracker_close_all_connections() . "\n";
446 | ?>
447 |
--------------------------------------------------------------------------------
/php_client/fastdfs_test_slave.php:
--------------------------------------------------------------------------------
1 | 1));
29 | if ($file_info)
30 | {
31 | $group_name = $file_info['group_name'];
32 | $remote_filename = $file_info['filename'];
33 |
34 | var_dump($file_info);
35 | var_dump(fastdfs_get_file_info($group_name, $remote_filename));
36 |
37 | $master_filename = $remote_filename;
38 | $prefix_name = '.part1';
39 | $meta_list = array('width' => 1024, 'height' => 768, 'color' => 'blue');
40 | $slave_file_info = fastdfs_storage_upload_slave_by_filename("/usr/include/stdio.h",
41 | $group_name, $master_filename, $prefix_name, null, $meta_list);
42 | if ($slave_file_info !== false)
43 | {
44 | var_dump($slave_file_info);
45 |
46 | $generated_filename = fastdfs_gen_slave_filename($master_filename, $prefix_name);
47 | if ($slave_file_info['filename'] != $generated_filename)
48 | {
49 | echo "${slave_file_info['filename']}\n != \n${generated_filename}\n";
50 | }
51 |
52 | //echo "delete slave file return: " . fastdfs_storage_delete_file($slave_file_info['group_name'], $slave_file_info['filename']) . "\n";
53 | }
54 | else
55 | {
56 | echo "fastdfs_storage_upload_slave_by_filename fail, errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info() . "\n";
57 | }
58 |
59 | echo "delete file return: " . fastdfs_storage_delete_file($file_info['group_name'], $file_info['filename']) . "\n";
60 | }
61 |
62 | ?>
63 |
--------------------------------------------------------------------------------
/test/fastdfs.php:
--------------------------------------------------------------------------------
1 | getPostFilename());
39 |
40 | $ret['file'] = $file;
41 | $ret['fileId'] = uploadToFastdfs($curlFile, $fileSuffix);
42 | return $ret;
43 | }/*}}}*/
44 |
45 | //获取后缀
46 | function getSuffix($fileName)
47 | {/*{{{*/
48 | preg_match('/\.(\w+)?$/', $fileName, $matchs);
49 | return isset($matchs[1])?$matchs[1]:'';
50 | }/*}}}*/
51 |
52 | //上传文件到fastdfs
53 | function uploadToFastdfs(CurlFile $file, $fileSuffix)
54 | {/*{{{*/
55 | $fdfs = new FastDFS();
56 | $tracker = $fdfs->tracker_get_connection();
57 | $fileId = $fdfs->storage_upload_by_filebuff1(file_get_contents($file->getFilename()), $fileSuffix);
58 | $fdfs->tracker_close_all_connections();
59 | return $fileId;
60 | }/*}}}*/
61 |
62 | ?>
63 |
64 |
65 |
66 | fastdfs
67 |
68 |
69 |
75 |
76 | 
77 | 
78 | 
79 | 
80 | 
81 | 
82 |
83 |
--------------------------------------------------------------------------------
/test/test.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | fdfs_test /etc/fdfs/client.conf upload /home/steven/01.jpg
--------------------------------------------------------------------------------