Выполнить сценарии в то же время, если проблема еще - PullRequest
0 голосов
/ 22 июля 2011

Сейчас я не могу использовать flock (ограничения сервера), поэтому я создаю альтернативную систему блокировки файлов.Вот мой код.

$dir = "C:\\wamp\\www\\test\\";
$files = scandir($dir);

for($i=0; $i<count($files); $i++) 
{   
    if(substr(strrchr($files[$i],'.csv'),-4) == '.csv')
    {           
        echo "File ".$files[$i]." is a csv"."</br>";
        if (file_exists("$dir$files[$i].lock"))
        {
            echo $files[$i]." has lock in place"."</br>";
            $i++;
        }
        else
        {
            if($file_handle = fopen("$dir$files[$i]", "rb"))
            {
                $file_lock_handle = fopen("$dir$files[$i].lock", "w");
                echo "Setting Lock"."</br>";

                //Do Logic

                fclose($file_handle);
                fclose($file_lock_handle);          

                sleep(3);
                unlink("$dir$files[$i].lock");
            }       
        }
    }
    else
    {
        //Do nothing
    }   
}

Если я запускаю эти скрипты рядом.Он ожидает завершения первого скрипта, прежде чем выполнит второй.Как я могу запустить их одновременно?т.е., если блокировка существует, я хочу, чтобы он пропустил этот файл и перешел к следующему.

1 Ответ

0 голосов
/ 22 июля 2011

Вот хороший пример этого: http://www.php.net/manual/en/function.flock.php#92731

...