Установка нужных прав рекурсивно на php

На форуме Фиесты увидел интересный код.
Вот он, слегка модернизированный:

function recurse_chmod($mypath,$rights,$uid="",$gid="")
{
    $d = opendir ($mypath) ;
    while(($file = readdir($d)) !== false)
    {
        if ($file != "." && $file != ".." && $file != $_SERVER['PHP_SELF'])
        {
            $typepath = $mypath . "/" . $file ;
            if (filetype ($typepath) == 'dir') {
                recurse_chmod ($typepath,$uid,$gid);
            }
            @chmod($typepath,$rights);
            if ($uid!="") @chown($typepath, $uid);
            if ($gid!="") @chgrp($typepath, $gid);
        }
    }
}

Функция по зананному пути меняет права, владельца и принадлежность к группе для всех файлов и подпапок и файлов в них.
Формат использования:

recurse_chmod("myfolder","0777");
recurse_chmod("myfolder","0755","admin","admin");
recurse_chmod("myfolder","0666","apache","nobody");

20 ноября – начало новой эры в SE

По-моему, это именно оно.
Гугль начал учитывать голоса серферов – при помощи кнопок, которые вы можете понаблюдать непосредственно в выдаче гугла.

Пока Гугль заявляет, что голоса не будут учитываться для построения выдачи для всех юзеров – выдачу можно менять только для себя. Но это уже Прецедент. Плюс еще один способ, причем отличный, для отделения белых агнцев от черных козлищ.

Изменения придут, конечно, не сразу, но они придут неотвратимо.

Улучшаем процент отказов на сайте

Один из косвенных факторов влияния на ранжирование сайтов в гугле – т.н. процент отказов, т.е. процент серферов, которые закрыли сайт, увидев его первую страницу. Один из способов уменьшить процент отказов – не дать серферу нажать кнопку Назад. Вот js-скрипт, который реализует данный функционал:


// Author: Jungle
// Homepage: http://seodiver.ru/2008/11/no-goback-javascript.html

function createCookie(name,value,days) {
 if (days) {
 	var date = new Date();
 	date.setTime(date.getTime()+(days*24*60*60*1000));
 	var expires = "; expires="+date.toGMTString();
 }
 else var expires = "";
 document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
 var nameEQ = name + "=";
 var ca = document.cookie.split(';');
 for(var i=0;i < ca.length;i++) {
 	var c = ca[i];
 	while (c.charAt(0)==' ') c = c.substring(1,c.length);
 	if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 }
 return null;
}

function eraseCookie(name) {
 createCookie(name,"",-1);
}

var no_goback = readCookie('no_goback');

if (location.search == '?no_goback') {
    var form = document.createElement('form');
    form.setAttribute('action', document.referrer);
    document.body.appendChild(form)
    form.submit() // редиректим назад
} else if (!no_goback) {
    createCookie('no_goback', location.href);
var url = location.protocol + '//' + location.hostname +
        (location.port != 80 ? ':' + location.port : '') +
        location.pathname + '?no_goback';
    location.href = url; // редиректим включаем no goback
}

Написан Jungle по просьбе/наводке alexf , за что им огромное спасибо!

“Google Pipes”

Гугль запускает Google Mashup Editor – проект, похожий на Yahoo Pipes, только без визуального конструктора, а используя специальный язык: http://habrahabr.ru/blogs/Google_mashup/43801 . Сейчас проект в бете, на закрытом тестировании.

Мне такой подход гораздо более по нраву.
Хотя, конечно, лучше писать на php, на своем серваке.