File 卷曲错误26无法打开文件

File 卷曲错误26无法打开文件,file,curl,send,php,File,Curl,Send,Php,所以,我需要帮助 prePS-代码可以工作,但在负载测试时不能正常工作 所以,php代码从用户那里获取一个文件,并将其作为树部分保存在cluster4节点上 所以,简单的代码如下 $user_file = get_full_filename_of_userfile_from_post_array('user_file'); $fin = fopen($user_file,'rb'); $fout1 = fopen(get_uniq_name('p1'),'wb'); $fout2 = fop

所以,我需要帮助

prePS-代码可以工作,但在负载测试时不能正常工作

所以,php代码从用户那里获取一个文件,并将其作为树部分保存在cluster4节点上

所以,简单的代码如下

$user_file = get_full_filename_of_userfile_from_post_array('user_file');

$fin = fopen($user_file,'rb');

$fout1 = fopen(get_uniq_name('p1'),'wb');
$fout2 = fopen(get_uniq_name('p2'),'wb');
$fout3 = fopen(get_uniq_name('p3'),'wb');

while ($part = fread($fin))
{
fwrite($fout1,get_1_part($part));
fwrite($fout2,get_2_part($part));
fwrite($fout3,get_3_part($part));
}
fclose($fin);
fclose($fout1);
fclose($fout2);
fclose($fout3);

$location = get_random_nodes(3,$array_of_existing_nodes);

foreach($location as $key => $node)//key 1..3
{
if(is_local_node($node)
{
save_local_file(get_part_file_name($key));
}
else
{
save_remote_file(get_part_file_name($key),$node);
}
}

//delete tmp files, logs,...etc
save_remote_file-使用cURL发送类似于docs中的file POST方法

$post_data = array(
'md5sum' => $md5sum,
'ctime'  => $ctime,
.....
'file'   => @.$upload_file_full_name,
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, Config::get('connect_curl_timeout'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
curl_setopt($ch, CURLOPT_URL, $URL.'/index.php');
curl_setopt($ch, CURLOPT_PORT, Config::get('NODES_PORT'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
所以,在测试期间,我上传了14000个文件,每个请求一个文件,每个节点并行10个请求。 php代码,检查文件并得到答案,然后在后台将文件保存在集群上。 是的,我知道创建用于保存的守护进程会很好——这是未来的任务

所以,有时,在后台节点上可能有大约100个,甚至200个php进程 使用php fpm函数

ignore_user_abort(true);
set_time_limit(0);
session_commit();

if(function_exists('fastcgi_finish_request'))
    fastcgi_finish_request();
一些计算。 14000个文件=14000*3=42000个零件,从4随机保存3个,因此25%的零件保存在本地,75%保存在远程 =0.75*42000=31500远程存储

在测试期间,我从curl的所有节点上得到大约100个错误 errno=26 errer=无法打开文件iñP_zOж ЅHж//这很奇怪,因为源文件名-它的名称大约为124个字符。范例

/var/vhosts/my.domains.com/www/process/r_5357bc33f3686_h1398258739.9968.758df087f8db9b340653ceb1abf160ae8512db03.chunk0.part2

在使用cURL编写代码之前,我添加了检查文件是否存在$upload\u file\u full\u name 并且是\u可读的$upload\u文件\u全名;如果没有-记录它

检查通过良好,但curl从31500次返回错误100次

另外,添加代码,如果出现错误,请等待10秒,再试一次,等待10秒,再试一次,等待10秒,再试一次

总是所有如果第一次尝试有错误,所有下一次尝试也有错误,但是根据日志,同时另一个php处理正在保存的其他文件,好通过curl发送一个部分


所以我不明白,我如何才能找到原因并加以解决。

新信息。我写的错误出现在加载测试期间。我猜,可能错误的出现总是意味着每100个好的请求就有一个错误,并且每个节点都有一个延迟的请求进行负载测试-同样的,不加载系统,简单地在单一模式下使用。是的,错误也出现了。