FAQ Stepan Ilyin aka Step Xakep, номер #058, стр. 058-106-3 Q: Недавно написал небольшой скрипт для автоматизированного обмена прямыми warez’ными ссылками. Размер файлов здесь имеет большое значение, т.к. не каждый может скачивать файлы весом более 5-10 мегабайт. Именно поэтому ОЧЕНЬ хочется реализовать автоматическое определение размера файла по его URL. Возможно ли это реализовать с помощью штатных средств PHP? A: Конечно, возможно! Причем без дополнительных библиотек и модулей. Для этого можно использовать процедуру, написанную неким Сергеем Тарасовым. Очень оригинальное и в то же время простое решение: <? $hostname = "units.ru"; // units.ru - имя сервера $filename = "/files/winamp.exe"; // интересующий на сервере файл get_size($hostname, $filename); function get_size($hostname, $filename) { $end = false; $fp = fsockopen ($hostname, 80, &$errnr, &$errstr) or die("$errno:$errstr"); fputs($fp,"HEAD ".$filename." HTTP/1.0\n\n"); while (!$end) { $line = fgets($fp, 2048); if (trim($line) == "") { $end = true; } else { $str = explode(": ", $line); if ($str[0] == "Content-Length") print "Size of ".$filename." file ".$str[1]." bytes"; } } fclose($fp); } ?> Q: Почему у меня в safe-mode’е винды не работает мышка? Очень напрягает, помогите please. A: Ты забыл упомянуть, что используешь USB-мышку и 9x/NT винды. Дело в том, что в safe-mode’е этих ОС подгружаются только стандартные (читай наиболее стабильные) драйвера. Почему в этот список не входят дрова для USB-устройств – для меня до сих пор загадка. И ничего тут не поделаешь. Могу лишь посоветовать приобрести переходник USB > PS/2. Q: Я окончательно перешел на *nix ОС. Не могу сказать, что мне это сильно нравится, но деваться некуда. Первая проблема – как посмотреть список расшаренных ресурсов на windows машине? А: Способов море. Вот некоторые из них: 1) Cкрипты smbfind (findsmb). Синтаксис предельно прост: читаем мануал. 2) Команда nmblookup -r -A 192.168.0.1, где 192.168.0.1 – адрес удаленной машины. 3) Команда smbclient -N -L hostname -I 192.168.0.1 Q: Объясните, пожалуйста, принцип создания рабочего дубликата Linux-системы. A: Реализуется это довольно просто. По крайней мере, никаких сторонних утилит, как в случае с windows-системами, не требуется. Первое, что нужно сделать - монтировать жесткий диск (man mount), на который, в общем-то, и будет переписан дубликат системы. После чего следует создать на нем новые разделы (man fdisk) и скопировать в них все имеющиеся файлы (естественно, кроме /mnt). Последнее можно сделать как стандартным Midnight Commander’ом (который, кстати, недавно обзавелся новой версией, имеющей МАССУ нововведений и багфиксов), так и *nix командами. Например, так: для каждого раздела «cp -Raxv / /mnt/novii_razdel» (без кавычек, естественно). Далее, руководствуясь комментариями и документацией, правим /mnt/novii_razdel/etc/fstab и создаем с помощью /dev/MAKEDEV недостающее устройство. Последний штрих: «mkdir /mnt/novii_razdel/proc /mnt/novii_razdel/mnt» и «lilo -r /mnt/novii_razdel -b /dev/hdb». Готово! |