Тряхнул стариной..
Не так давно сделал два проекта WEB:
1) Передрал 1 в 1 один из сайтов без доступа к движку. К сожалению «в работу» не пошло. Исходники тут.
2) За полчаса собрал студенческий «курсовик» — фотоальбом на PHP+JavaScript. Исходник тут.
Жизнь замечательных грибов
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой на языке PHP
Не так давно сделал два проекта WEB:
1) Передрал 1 в 1 один из сайтов без доступа к движку. К сожалению «в работу» не пошло. Исходники тут.
2) За полчаса собрал студенческий «курсовик» — фотоальбом на PHP+JavaScript. Исходник тут.
Задача: в кроне с некой периодичностью запускается скрипт на php. Однако он не всегда успевает завершится за минуту. Соответственно нужно добиться того, чтобы скрипт не запускался повторно, в том случае если предыдущий скрипт еще не завершился.
Решение: при каждом запуске скрипта будем при помощи fopen пробовать открыть некий файл (и создавать его в случае отсутствия). После чего будем проверять — а не открыт ли он уже еще кем-то. Если открыт — думаем что открыт другой копией скрипта, и благополучно завершаем свою работу.
|
1 2 3 |
$fl = fopen( ‘/tmp/shaper_new.lock’, ‘w’ ); if( ! ( $fl && flock( $fl, LOCK_EX | LOCK_NB ) ) ) {die("--копия скрипта уже запущена!");}; |
В принципе можно и считать запущеные копии при помощи ps -ax | grep name_script | wc -l, но почему то у меня сиё работало не надежно..
Задача: в Lanbilling 2.xx забиты узловые свичи. Необходимо время от времени «снимать» с них текущую конфигурацию.
Решение: поднимаем tftp сервер, и при помощи snmp , даем команду свичам сбросить свою конфигурацию на него. Скрипт делаем на PHP.
Сделаем это на PHP:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ip="222.226.134.21"; $vlan=10; //получаем порты в 10 VLAN echo "--опрашиваю $ip\n"; $rez=`snmpget -v2c -c X-Files $ip 1.3.6.1.2.1.17.7.1.4.3.1.4.$vlan`; $reza= explode("Hex-STRING: ", $rez); $tmp=trim($reza[1]); $reza= explode(" ", $tmp); $hx=hexdec($reza[0]."".$reza[1]."".$reza[2]."".$reza[3]); $bin=decbin($hx); echo "--бинарная строка: $bin\n"; if (strlen($bin)>1){ for ($i=0;$i<strlen($bin);$i++){ if ($bin[$i]==1) { $port=$i+1; echo "--на $port порту $vlan VLAN\n"; }; }; } else { echo "$ip отдал не корректные данные! ($rez)\n"; }; |
После обновления PHP до 5.6, стала выводится сия строчка.
$var1 = similar_text(str_replace(«,»,»»,$address),str_replace(«,»,»»,$oldad), &$tmp);
Т.е. передача переменной по ссылке стала невозможна. Пришлось убрать &..