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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Системные команды из php
 
 автор: kasmanaft   (01.02.2007 в 13:17)   письмо автору
 
 

У меня есть папка с разряженными файлами, "нулевая информация замещается в них виртуальными нулями" ... То есть в папке куча недокаченных файлов, совсем недокаченные хочу поудалять. (может кто знаком с "рыбалкой" ;-)

Функция filesize() определяет размер целого файла, а не реальный, занимаемый им на диске ...

Как можно определить размер файла "На диске:" (в виндовсе) ?

Поискал из командной строки, нашел команду "compact" из нее вроде можно достать то, что нужно. Но! Почему-то она не выполняется из скрипта :( Да и вообще та же команда "dir" как-то своеобразно из скриптов работает: показывает файлы еще и во вложенных папках (может с параметром /S запускается, но не в этом дело) ....

Как правильно работать с системными командами? (На локалхосте. Ограничений никаких нет ... виндовс)
<?
/* пробовал так */
$result = `compact`;
//$result = system('compact');
//$result = exec("compact");
echo nl2br($result);
?>
Может быть есть другой способ узнать этот размер?

   
 
 автор: kasmanaft   (01.02.2007 в 16:00)   письмо автору
 
   для: kasmanaft   (01.02.2007 в 13:17)
 

Ты смотри на него ... не хотит и всё :(
DIR работает, а COMPACT опять нет.

<?php
$text 
'';
$descriptorspec = array(
    
=> array("pipe""r"),
    
=> array("pipe""w"),
    
=> array("pipe""w")
);
  
$process proc_open('D:\WINDOWS\system32\cmd.exe'$descriptorspec$pipes);
if (
is_resource($process))
{
    
fwrite($pipes[0], "dir C:\r\n");   
    
/*
    fwrite($pipes[0], "C:\r\n");
    fwrite($pipes[0], "compact\r\n");
    */
    
fclose($pipes[0]);
    
    while(
$str fgets($pipes[1], 1024))
        
$text .= $str;

    
fclose($pipes[1]);
}
echo 
iconv('866''windows-1251'$text);
?>

Что я делаю неправильно?

   
 
 автор: Саня   (01.02.2007 в 16:09)   письмо автору
 
   для: kasmanaft   (01.02.2007 в 13:17)
 

<?
print iconv("CP866""WINDOWS-1251", `compact`);
Сработало замечательно.

   
 
 автор: kasmanaft   (01.02.2007 в 16:57)   письмо автору
 
   для: Саня   (01.02.2007 в 16:09)
 

Действительно всё работает ... Запускал из php expert editor'a - не хотел работать... проверил как положено ....
И оно работает! ёпть ... пол дня просидел ...

   
Rambler's Top100
вверх

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