2013-07-28 2 views
1

Я видел довольно похожие вопросы, но никто из них не ответил на весь мой прецедент. У меня есть файл, который я не буду запускать один раз, и ТОЛЬКО один раз. У меня не будет доступа к БД, поэтому я хочу создать файл, который будет отмечать (по его существованию), что сценарий уже был вызван один раз. Я новичок в разрешениях файлов и каталогов Linux, и у меня было несколько часов, чтобы обернуть вокруг себя голову. Я до сих пор не совсем понятен во многих сценариях.Сделать файл php выполнимым только один раз

Будет ли PHP по умолчанию разрешать создавать файл в той же папке, что и скрипт, или я и кто-либо другой, который реализует это, нужно явно устанавливать разрешения? Я заметил, что владелец и группа отличается от файла, созданного NetBeans и что созданный PHP-скрипт

-rw-r--r-- 1 anders anders 658 Jul 28 23:27 setup.php 
-rw-r--r-- 1 nobody nogroup 0 Jul 28 23:28 from_setup_script.txt 

Так что я должен быть в курсе, если бы я пойти вместе с этим решением, или есть кто-нибудь провозгласив лучший способ решить вышеуказанный случай?

+0

все зависит от вашей конфигурации PHP, папка, в которой находится скрипт, должна иметь соответствующие разрешения, позволяющие php писать новый файл. – cmorrissey

+0

похоже, что вы можете проверить все это для себя через пару минут –

+0

да для моей установки я могу проверить это, но я обеспокоен тем, что может случиться, если оно используется на другом сервере. – Anders

ответ

-3

Вы можете использовать переменные сессии, т.е .:

<?php 
session_start(); 
$_SESSION['isRunnable'] = true; 

if ($_SESSION['isRunnable']) { 
    // run... 
    $_SESSION['isRunnable'] = false; 
} 
+1

, его сценарий запускается только один раз ... не на сеанс пользователя – cmorrissey

+0

сеанс уникален для каждого посетителя и находится поверх всего лишь временного. – Anders

0

вы можете запрограммировать, что ваш PHP добавить <?php exit; ?> в начале файла, если файл excuted я имею в виду переписать файл PHP. очень просто вот что вы fopen(), чтобы открыть файл. вы должны использовать w + для этой цели , а затем fwite()

+0

В этом случае вы также можете столкнуться с ограничениями на доступ к файлам, я боюсь. Я думаю, мне, возможно, придется добавить исключение, обрабатывающее эти случаи. – Anders

Смежные вопросы