| |
|
|
| | Решил сделать залп для загрузки изобюражений.
Сделал форму отправки файла (input type=file),зациклил её(name=image[$i]) и уже потом через скрипт выбираю файлы для загрузки...
естесно, загрузку помещаю в цикл for, как и для формы(цикл до одного и того же исла что в форме, что и при загрузке)...
И вот тут начинается самое весёлое: скрипт как пологается создаёт tmp-файлы в папке tmp, все названия фалов разные, их столько лько и загружаемых мною файлв - всё тут в порядке...
Беру параметры изображений через getimagesize, а размер через $_FILES[image][image][$i]... для каждой картинки все параметры находит правильно... но самое интересное начинается в следующем: как только дело дохо функции copy, то тут скрипт начинает пошаливать, параметры он записывает (в моём случае в БД) правильные, а вот копирует не всегда то, что нужно, т.е. каждый последующий фал может скопировать либо правильно, либо как предыдущий, т.е. может закачаться один и тот же файл n-количество раз...
тут я и подумал, что скрипт захлёбывается именно на copy...
Как избавиться от этого? Зависит ли это от размера максимально загружаемого файла в php.ini? Зависит ли это от парметрадоступной памяти для php в php.ini (у меня 8Мб)?
А если можно избавиться от этого, то как? Цикл я зыцикливал 500 раз... проверку кол-ва загружаемых, а не ПУСТЫХ файлов я делал - не помогло... | |
| |
|
|
| |
|
|
| |
для: BAHO
(20.10.2005 в 20:09)
| | | Идея с циклом в 500 итераций не очень понятна может проще foreach пройтись или по числу элементов в массиве? Не могли бы вы прикрепить код того, что у вас сейчас? | |
| |
|
|
| |
|
|
| |
для: cheops
(20.10.2005 в 21:23)
| | | код опка полон мусора...
<?
if($_POST[addimg])
{
foreach($_FILES[image] as $key=>$val)
{
if($val) $t++;
}
for($i=1;$i<=$t;$i++)
{
$image[$i]=$_FILES['image']['tmp_name'][$i];
$image_name[$i]=$_FILES['image']['name'][$i];
$image_size[$i]=round($_FILES['image']['size'][$i]/1024);
echo $image[$i];
@$permits=getimagesize($image[$i]);
echo "<h1>$permits[0] - $permits[1]</h1>";
$image_name[$i]=str_replace(" ", "_", $image_name[$i]);
$image_name[$i]=str_replace("", "'", $image_name[$i]);
$image_name_arr=explode(".",$image_name[$i]);
$type=strtolower(end($image_name_arr));
$image_name[$i]=eregi_replace(".$type","",$image_name[$i]);
$res_image[$i]=$image_name[$i];
list($id_cat,$id_subcat)=explode("-",$_POST[categ]);
if($id_cat==0) {$id_cat=$id_subcat;$id_subcat=0;}
if(!$id_subcat)
{
$id_subcat="other";
$id_subcat_db=0;
}
else
{
$id_cat=mysql_result(mysql_query("select id_cat from g2_subcategories where id='$id_subcat'"),0,'id_cat');
$id_subcat_db=$id_subcat;
}
$img="files/".$id_cat."/".$id_subcat."/big/".date("Ymdhis").".$type";
$img_small="files/".$id_cat."/".$id_subcat."/small/".date("Ymdhis").".$type";
$image_name[$i]=date("Ymdhis").".".$type;
if(copy($image[$i],$img))
{
unlink($image[$i]);
chmod($img, 0644);
if(!ri($img, $img_small, 150, 113)) echo "Произошла ошибка при создании уменьшенной копии изображения!";
$query_addsubcat="insert into g2_images values ('','$id_cat','$id_subcat_db','$image_name[$i]',now(),'$image_size[$i]','0','$permits[0]x$permits[1]','0')";
if(mysql_query($query_addsubcat))
{
chdir("files/".$id_cat."/".$id_subcat."/big");
$photodat=fopen("photo.dat",a);
fwrite($photodat,$image_name[$i]." ".time()." ".$image_size[$i]." ".$permits[0]." ".$permits[1]."\r\n");
fclose($photodat);
chdir("../../../..");
if($id_subcat=="other") $url="index.php?mode=viewcat&cat=$id_cat";
else $url="index.php?mode=viewsub&sub=$id_subcat";
$info="Картинка успешно загружена! Она появится после подтверждения администратором.";
include("design/inform.tpl");
}
else
{
if($id_subcat=="other") $url="index.php?mode=viewcat&cat=$id_cat";
else $url="index.php?mode=viewsub&sub=$id_subcat";
$info="Произошла ошибка! Картинка не загружена!";
include("design/inform.tpl");
}
}
else
{
$url="index.php?mode=viewsub&sub=$id_subcat";
$info="Произошла ошибка! Невозможно загрузить картинку на сервер. Тип файла не поддерживается php.";
include("design/inform.tpl");
}
}
$image[$i]="";
$image_name[$i]="";
$image_size[$i]="";
}
else
{
$query_cats=mysql_query("select * from g2_categories order by name");
while($array_cats=mysql_fetch_array($query_cats))
{
$opt_cats.="<option value=\"0-$array_cats[id]\">$array_cats[name]</option>";
$query_subs=mysql_query("select * from g2_subcategories where id_cat='$array_cats[id]' order by name");
while($array_subs=mysql_fetch_array($query_subs))
$opt_subs.="<option value=\"$array_cats[id]-$array_subs[id]\">$array_cats[name] > $array_subs[name]</option>";
}
$opt_cats=$opt_cats.$opt_subs;?>
<form action=zalp.php method=post enctype="multipart/form-data">
<tr>
<td><select name=categ class=smallfont>
<?echo$opt_cats;?>
</select></td>
</tr><?
for($i=1;$i<=500;$i++)
{?>
<table border="0">
<tr>
<td><input type=file name=image[<?echo$i;?>]></td>
</tr><?
}?>
<tr>
<td><input type=submit name=addimg value="Добавить"></td>
</tr>
</table>
</form><?
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: BAHO
(21.10.2005 в 13:55)
| | | Такой здоровый код лучше прикреплять в виде файла к сообщению.
Попробуйте заменить убарать первый цикл и зменить параметр $t на count($_FILES['image']['name'])
Хм... так у вас файл назначения ($img) для всех файлов одинаковый получается
<?php
if(copy($image[$i],$img))
?>
|
Скрипт будет выполняться достаточно быстро, поэтому не следует расчитывать, что $img будет иметь для каждого файла разное имя... | |
| |
|
|
| |
|
|
| |
для: cheops
(22.10.2005 в 00:27)
| | |
<?
$img="files/".$id_cat."/".$id_subcat."/big/".date("Ymdhis").".$type";
?>
|
Всё понятно, получается что скрипт просто выполнает всю работу так быстро, что в одну секунду обрабатывает все файлы и заменяет предыдущий файл, загруженный в эту же секунду, новым. :) | |
| |
|
|