Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу найти ошибку в алгоритме.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Maiai
Отправлено: 09 Сентября, 2009 - 17:44:00
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Здравствуйте, пишу скрипт для работы с мп3 файлами, но возникла проблема, а именно не корректно идут данные о размере файла.
Вот сама ф-ция:
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once('class.php');
  3.  
  4. function get_song($url)
  5. {
  6. flush ();
  7.         $f = file_get_contents($url);
  8.         if(!$f){
  9.                 echo "Не возможно получить файл $url";
  10.         }else{ 
  11.                 $open = fopen("song.mp3", "w+");
  12.                 if(!$open){
  13.                         echo "Не возможно открыть файл song.mp3";
  14.                 }else{
  15.                         if(is_writable("song.mp3")){           
  16.                                 $fr = fwrite($open, $f);
  17.                                 $razmer = filesize("song.mp3");
  18.                                 $id3 = new id3('song.mp3');
  19.                                 //echo "".$razmer."<br><hr>";
  20.                                 echo "(null, '".$id3->track."', '".URLHak($id3->name)."', '".URLHak($id3->artists)."', '".URLHak($id3->album)."', '".URLHak($id3->genre)."', '".$url."', '".$id3->year."', '".$id3->filesize."', '".$id3->bitrate."', '".$id3->frequency."', '".$id3->lenght."', '".$id3->layer."', '".$id3->mode."', '".$id3->mpeg_ver."', ' ', '1'),<br>";
  21.                         }
  22.                 }
  23.         }      
  24.         fclose($open);
  25. @flush ();
  26. }
  27.  


require_once('class.php'); подключения скрипта для работы с id3 тегами.

при использовании ф-ции

PHP:
скопировать код в буфер обмена
  1.  
  2. get_song("http://127.0.0.1/123/mp3/01_-_Nickelback_-_Little_Friend.mp3");
  3. get_song("http://127.0.0.1/123/mp3/01_-_Nickelback_-_Something_In_Your_Mouth.mp3");
  4.  


Размер у всех файлов, выводится такой, как был у первого в списке.

Надеюсь смог правильно изложить суть проблемы и сам вопрос, заранее благодарен.
 
 Top
Roler
Отправлено: 09 Сентября, 2009 - 17:48:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Вроде размер берёте так
CODE (text):
скопировать код в буфер обмена
  1. $razmer = filesize("song.mp3");

Но потом вы выводите явно не это.
 
 Top
Maiai
Отправлено: 09 Сентября, 2009 - 18:03:05
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




$razmer = filesize("song.mp3"); - тут я хотел перепроверить $id3->filesize, но результат оказался одним и тем же, так и так выводит не верные данные.

(Отредактировано автором: 09 Сентября, 2009 - 18:03:29)

 
 Top
Ch_chov
Отправлено: 09 Сентября, 2009 - 18:15:53
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
Размер у всех файлов, выводится такой, как был у первого в списке.

У вас так в функции и сделано
Цитата:
$razmer = filesize("song.mp3");
 
 Top
Maiai
Отправлено: 09 Сентября, 2009 - 18:20:24
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Тогда извиняюсь, вот подчистил:

PHP:
скопировать код в буфер обмена
  1.  
  2. function get_song($url)
  3. {
  4. flush ();
  5.         $f = file_get_contents($url);
  6.         if(!$f){
  7.                 echo "Не возможно получить файл $url";
  8.         }else{ 
  9.                 $open = fopen("song.mp3", "w+");
  10.                 if(!$open){
  11.                         echo "Не возможно открыть файл song.mp3";
  12.                 }else{
  13.                         if(is_writable("song.mp3")){           
  14.                                 $fr = fwrite($open, $f);
  15.                                 $id3 = new id3('song.mp3');
  16.                                 echo "(null, '".$id3->track."', '".URLHak($id3->name)."', '".URLHak($id3->artists)."', '".URLHak($id3->album)."', '".URLHak($id3->genre)."', '".$url."', '".$id3->year."', '".$id3->filesize."', '".$id3->bitrate."', '".$id3->frequency."', '".$id3->lenght."', '".$id3->layer."', '".$id3->mode."', '".$id3->mpeg_ver."', ' ', '1'),<br>";
  17.                         }
  18.                 }
  19.         }      
  20.         fclose($open);
  21. @flush ();
  22. }
  23.  


За вывод размера отвечает $id3->filesize

Вот часть кода

PHP:
скопировать код в буфер обмена
  1.  
  2. function id3($file, $study = false) {
  3. .....
  4.  
  5.     $this->filesize = filesize($file);
  6. ....
  7.  
  8. }
  9.  
  10.  


Как можно подправить данный скрипт, для решения проблемы?

(Отредактировано автором: 09 Сентября, 2009 - 18:23:29)

 
 Top
Ch_chov
Отправлено: 09 Сентября, 2009 - 18:23:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Ну и что?
В конструктор класса все равно передается song.mp3. Соответственно для него и будет определятся размер.
Цитата:
$id3 = new id3('song.mp3');

(Отредактировано автором: 09 Сентября, 2009 - 18:24:44)

 
 Top
Maiai
Отправлено: 09 Сентября, 2009 - 18:27:47
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Но с остальными данными все нормально, будь то автор жанр и прочее, только размер, song.mp3 каждый раз при вызове ф-ции меняется на загруженный.
 
 Top
Ch_chov
Отправлено: 09 Сентября, 2009 - 18:29:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




А если song.mp3 заменить на $url?
(Добавление)
И вообще, не совсем понятно что должна делать эта функция. Для чего используется буферизация и зачем каждый файл записывается в song.mp3?
Судя по всему вы получаете содержимое файла song.mp3 с помощью file_get_contents, затем записываете это в song.mp3 и загружаете этот song.mp3 в конструктор класса id3.

(Отредактировано автором: 09 Сентября, 2009 - 18:40:56)

 
 Top
Maiai
Отправлено: 09 Сентября, 2009 - 18:40:04
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Цитата:
А если song.mp3 заменить на $url?


Ну это ничего не дает. Сейчас постараюсь разъяснить надобность ф-ции.

Что бы получить данные о mp3 файле, его нужно сначала загрузить с фтп на хост (file_get_contents()) после чего полученный контент, записывается в файл song.mp3, после чего с записанного файла считываются все необходимые данные, и закрывается файл. и так каждый раз при вызове ф-ции.

Если сказать короче, для загрузки файла на сервер, и считывания с него данных.

Так как работаю с большим числом файлов, использую буферизацию, что бы в случае чего, был виден текущий ход выполнения операции.
 
 Top
Ch_chov
Отправлено: 09 Сентября, 2009 - 18:46:43
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Добавь перед каждым filesize функцию clearstatcache.

(Отредактировано автором: 09 Сентября, 2009 - 19:07:27)

 
 Top
Maiai
Отправлено: 09 Сентября, 2009 - 19:42:32
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




Ch_chov пишет:
Добавь перед каждым filesize функцию clearstatcache.


Вот, большое спасибо за помощь, эх.. кеширование есть кеширование Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB