- 论坛徽章:
- 2
|
本帖最后由 tiankafeiwu 于 2013-03-11 17:39 编辑
写的2个php脚本,想把目录下的历史图片(图片数量有点大)一次性通过php拓展接口写入fastdfs分布式上,搭建的2个节点,167和196,当图片量少的时候,程序运行正常,但当图片一多的时候就报错了,有可能是我脚本写的有问题,也有可能是参数不对,执行时候返回的文件元信息插入mysql数据库,谢谢了。附上脚本和运行错误日志
php脚本1- [root@localhost www]# vim FastDFS.php
- <?php
- class FDFS {
- public function __construct() {
- $this->tracker = fastdfs_tracker_get_connection ();
- $this->server = fastdfs_connect_server ( $this->tracker ['ip_addr'], $this->tracker ['port'] );
- $this->storage = fastdfs_tracker_query_storage_store ();
- $this->server = fastdfs_connect_server ( $this->storage ['ip_addr'], $this->storage ['port'] );
- if (! $this->server) {
- error_log ( "errno1: " . fastdfs_get_last_error_no () . ", error info: " . fastdfs_get_last_error_info () );
- exit ( 1 );
- }
- $this->storage ['sock'] = $this->server ['sock'];
- }
- public function fdfs_upload($input_name) {
- # $file_tmp = $_FILES [$input_name] ['tmp_name'];
- # $real_name = $_FILES [$input_name] ['name'];
- # $file_name = dirname ( $file_tmp ) . "/" . $real_name;
- # // @copy($file_tmp, $file_name);
- # @rename ( $file_tmp, $file_name );
- echo $input_name;
- $file_info = fastdfs_storage_upload_by_filename ( $input_name, null, array (), null, $this->tracker, $this->storage );
- // print_r($file_info);die;
- if ($file_info) {
- $group_name = $file_info ['group_name'];
- $remote_filename = $file_info ['filename'];
- $i = fastdfs_get_file_info ( $group_name, $remote_filename );
- $storage_ip = $i ['source_ip_addr'];
- $real_name = $input_name;
- // var_dump($file_info);
- return array (
- $remote_filename,
- $group_name,
- $storage_ip,
- $real_name
- );
- }
- return false;
- }
- public function fdfs_down($group_name, $file_id) {
- $file_content = fastdfs_storage_download_file_to_buff ( $group_name, $file_id );
- return $file_content;
- }
- public function fdfs_del($group_name, $file_id) {
- fastdfs_storage_delete_file ( $group_name, $file_id );
- }
- }
- ?>
复制代码 php脚本test.php 主要执行这个脚本,实现把/Data/www/2012/01下的图片导入系统- <?php
- ini_set ( 'display_errors', 'On' );
- error_reporting ( E_ALL );
- define ( 'DOWNLOAD_URL', 'http://192.168.1.196' );
- require_once ("FastDFS.php");
- $conn = mysql_connect ( 'localhost', 'root', '' );
- $link = mysql_select_db ( 'fastdfs', $conn );
- $starttime = date("Y-m-d H:i:s").'<br>';
- function myscandir($path) {
- $mydir = dir ( $path );
- while ( $file = $mydir->read () ) {
- $p = $path . '/' . $file;
- if ((is_dir ( $p )) and ($file != ".") and ($file != "..")) {
- myscandir ( $p );
- }
- if (is_file ( $p )) {
- # echo $p . '<br>';
- $fdfs_obj = new FDFS ();
- $res = $fdfs_obj->fdfs_upload ( $p );
- $sql = "INSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('" . $res [0] . "', '" . $res [1] . "', '" . $res [2] . "', '" . $res [3] . "')";
- echo $sql . '<br>';
- $result = mysql_query ( $sql );
- var_dump ( $result );
- unset( $fdfs_obj );
- sleep(0.5);
- }
- }
- }
- myscandir ( '/Data/www/2012/01' );
- $endtime = date("Y-m-d H:i:s").'<br>';
- echo "开始时间:".$starttime;
- echo "结束时间:".$endtime;
- ?>
复制代码 附上执行错误日志:- /Data/www/2012/01/08/16/015b3c3d47b1de9fc88fab0cbf092b6675-0200x9999-1.jpg[2013-03-11 17:23:53] ERROR - file: ../tracker/tracker_proto.c, line: 37, server: 192.168.1.167:23000, recv data fail, errno: 107, error info: Transport endpoint is not connected
- INSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/16/010d22f404a4abb84b32b424a64bb2ae7d-0200x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/16/015b3c3d47b1de9fc88fab0cbf092b6675-0065x0065-primary.jpg[2013-03-11 17:23:53] ERROR - file: ../tracker/tracker_proto.c, line: 37, server: 192.168.1.167:23000, recv data fail, errno: 107, error info: Transport endpoint is not connected
- INSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/16/01ffe750bfc3666b84a88fe7bdf4f5fc83-0200x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- [2013-03-11 17:23:53] ERROR - file: ../common/connection_pool.c, line: 67, socket create failed, errno: 24, error info: Too many open files
- errno1: 24, error info: Too many open files
复制代码- /Data/www/2012/01/08/09/0131ee0231a3a1d52b695f3503e0cb9d49-0200x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/0171808bbd09a9def0a14218480cd98a98-0200x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/014ea475d2b4787d16e13d1c74dc4bef00-0200x9999-1.jpg[2013-03-11 17:23:53] ERROR - file: ../tracker/tracker_proto.c, line: 37, server: 192.168.1.167:23000, recv data fail, errno: 107, error info: Transport endpoint is not connected
- INSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/01fe907b2ffe89900984623dc589d3f9a5-0200x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/01d973cdc8cfd409d6d76775b9538c48d2-0200x9999-1.jpg[2013-03-11 17:23:53] ERROR - file: ../tracker/tracker_proto.c, line: 37, server: 192.168.1.167:23000, recv data fail, errno: 107, error info: Transport endpoint is not connected
- INSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/01f6e19997a021e8d87cc13ef4eef6b99f-0540x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/0165d8796853b4b07e1cc134f6f106bb5a-0540x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
- /Data/www/2012/01/08/09/016d33080d1380b7317299fc441564c0c3-0580x9999-1.jpgINSERT INTO `fdfs` (`file_id`, `group_id`, `storage_ip`,`real_name`) VALUES ('', '', '', '')<br>bool(true)
复制代码 |
|