Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: PHP захлёбывется

Сообщения:  [1-5] 

 
 автор: BAHO   (22.10.2005 в 13:13)   письмо автору
 
   для: cheops   (22.10.2005 в 00:27)
 


<?
$img
="files/".$id_cat."/".$id_subcat."/big/".date("Ymdhis").".$type";
?>


Всё понятно, получается что скрипт просто выполнает всю работу так быстро, что в одну секунду обрабатывает все файлы и заменяет предыдущий файл, загруженный в эту же секунду, новым. :)

   
 
 автор: cheops   (22.10.2005 в 00:27)   письмо автору
 
   для: BAHO   (21.10.2005 в 13:55)
 

Такой здоровый код лучше прикреплять в виде файла к сообщению.

Попробуйте заменить убарать первый цикл и зменить параметр $t на count($_FILES['image']['name'])

Хм... так у вас файл назначения ($img) для всех файлов одинаковый получается
<?php
  
if(copy($image[$i],$img))
?>

Скрипт будет выполняться достаточно быстро, поэтому не следует расчитывать, что $img будет иметь для каждого файла разное имя...

   
 
 автор: BAHO   (21.10.2005 в 13:55)   письмо автору
 
   для: 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($img0644);
        if(!
ri($img$img_small150113)) 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><?
  
}
?>

   
 
 автор: cheops   (20.10.2005 в 21:23)   письмо автору
 
   для: BAHO   (20.10.2005 в 20:09)
 

Идея с циклом в 500 итераций не очень понятна может проще foreach пройтись или по числу элементов в массиве? Не могли бы вы прикрепить код того, что у вас сейчас?

   
 
 автор: BAHO   (20.10.2005 в 20:09)   письмо автору
 
 

Решил сделать залп для загрузки изобюражений.
Сделал форму отправки файла (input type=file),зациклил её(name=image[$i]) и уже потом через скрипт выбираю файлы для загрузки...
естесно, загрузку помещаю в цикл for, как и для формы(цикл до одного и того же исла что в форме, что и при загрузке)...
И вот тут начинается самое весёлое: скрипт как пологается создаёт tmp-файлы в папке tmp, все названия фалов разные, их столько лько и загружаемых мною файлв - всё тут в порядке...
Беру параметры изображений через getimagesize, а размер через $_FILES[image][image][$i]... для каждой картинки все параметры находит правильно... но самое интересное начинается в следующем: как только дело дохо функции copy, то тут скрипт начинает пошаливать, параметры он записывает (в моём случае в БД) правильные, а вот копирует не всегда то, что нужно, т.е. каждый последующий фал может скопировать либо правильно, либо как предыдущий, т.е. может закачаться один и тот же файл n-количество раз...
тут я и подумал, что скрипт захлёбывается именно на copy...
Как избавиться от этого? Зависит ли это от размера максимально загружаемого файла в php.ini? Зависит ли это от парметрадоступной памяти для php в php.ini (у меня 8Мб)?
А если можно избавиться от этого, то как? Цикл я зыцикливал 500 раз... проверку кол-ва загружаемых, а не ПУСТЫХ файлов я делал - не помогло...

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования