IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Скрипт в UNIX (http://www.imho.ws/showthread.php?t=87067)

Naked 06.06.2005 18:25

Скрипт в UNIX
 
А можно написать скрипт на PHP и чтобы он работал всегда на сервере? И как его запустить там? :idontnow:

DeADMoroZ 06.06.2005 18:27

В каком смысле всегда? можно реализовать запуск по расписанию через cron

Naked 06.06.2005 18:29

нет, нужно чтобы он постоянно работал.

RaZEr 06.06.2005 18:33

rtfm: set_time_limit

Naked 06.06.2005 18:36

А как вообще запустить php скрипт с сервера без IE, из командной строки, можно такое???

RaZEr 06.06.2005 18:42

опять же - rtfm: http://www.php.net/manual/en/features.commandline.php

DeADMoroZ 06.06.2005 19:10

попросту говоря php <твой скрипт>

Naked 06.06.2005 19:26

А в бэкграунде его можно запустить? Если в скрипте бесконечный цикл, то после php <мой скрипт> он виснет...

DeADMoroZ 06.06.2005 19:35

php <твой скрипт>&

Naked 07.06.2005 18:19

Такая проблема, я запускаю php <мой скрипт> и все нормально работает, но когда я завершаю сессию в Putty и скрипт перестает работать, как сделать так, чтобы он так и висел? Или чтобы его можно было запустить с HTML странички...? :help:

RaZEr 07.06.2005 18:42

nohup <комманда> &

PS: man nohup

f1vlad 07.06.2005 19:43

Код:

/usr/local/bin/php /var/www/html/site/index.php

Naked 07.06.2005 21:01

А чтобы он запускался в автозагрузке можно сделать? Если просто как вы пишете, то при автозагрузке он не запускается... :( :help:

RaZEr 07.06.2005 21:09

В автозагрузку добавляет только адмнистратор. Используй crontab

Naked 07.06.2005 21:23

Я могу добавить в автозагрузку, и в crontab добавлял, только не исполняется он... висит в процессах, а скрипт даже первую строчку своего кода не исполняет, а если из консоли делаю, то всё работает... :( :(

RaZEr 07.06.2005 21:32

Скрипт в студию.

Naked 07.06.2005 21:46

Он большой, и в Unix, т.е. нужно еще символы конца строки ставить... :(
Там кроме функций открытия файла, записи в него, закрытия и простых арифметических операций ничего нет. Еще есть exec(), может из-за него неработает? Сам скрипт сто процентов рабочий - ведь он корректно работает при запуске просто, из командной строки Linux'а... :confused:

RaZEr 07.06.2005 21:54

Приатач. Выложи. Гадать на кофейной гуще чтоли...

Naked 07.06.2005 22:01

Вложений: 1
Ну вот он, файл :)

RaZEr 07.06.2005 22:16

Да. Там без поллитры не разобраться. Первое что можно подозревать - данные не записываются в файл потому что не хватает прав. Сделай на папку и все файлы chmod 777.

PS: А чего ты хотел добиться этим?: if ($date<=date('Y-m-d H:i:s')){

Naked 07.06.2005 23:08

Цитата:

RaZEr:
if ($date<=date('Y-m-d H:i:s')){
Это чтобы скрипт начинал работу с определенного времени.
Если бы не хватало прав, то он бы не работал вообще, а так, я же его запускаю "php <мой скрипт>&" и он исправно работает, а когда тоже самое пишу в crontab или автозагрузку, то не работает... Скорее всего это php не может запустить скрипт не из консоли, а так...:( придется переделывать на Perl...заодно и язык новый узнаю :p

Ale 08.06.2005 01:03

Если не выполняется именно по крону - для начала попробуй прописать все пути к файлам в абсолютной форме, в т.ч. те что у тебя в fopen, exec и где еще есть. Т.е. в начале пишем
$basePath = "/home/blabla/";
А далее соотв
fopen ($basePath."con.sim", "r")
итд
А вообще - "переделывать на Perl" - самое правильное решение. По определению :)

RaZEr 08.06.2005 01:23

Цитата:

Это чтобы скрипт начинал работу с определенного времени.
Да, только строки на больше-меньше сравнивать не лучшая идея...
Цитата:

Если бы не хватало прав, то он бы не работал вообще
Я о правах на файлы для fopen().

Цитата:

А вообще - "переделывать на Perl" - самое правильное решение. По определению
А ещё лучше прямиком на sh, - для всей гаммы ощущений...

Naked 08.06.2005 09:24

Тогда еще один вопрос:
Как на Perl осуществить чтение файла (не один символ, а целую строку) и запись в файл (вот с этим никак не разобраться...) :help:

Naked 08.06.2005 10:44

И еще, как в Perl'е дату получить (и время) :help:

Hubbitus 08.06.2005 10:57

Значит так, пробуем так:
В скрипт первой (!) строчкой добавляем
Код:

#!/usr/local/bin/php -q
На скрипт даем права на выполнение (для тестов ставим 0777), запускаем его из Крона не /usr/local/bin/php /var/www/html/site/index.php а просто как скрипт /var/www/html/site/index.php

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

Цитата:

RaZEr:
Цитата:

Ale:А вообще - "переделывать на Perl" - самое правильное решение. По определению
А ещё лучше прямиком на sh, - для всей гаммы ощущений...
По какому это определению действительно? :biggrin:
Скорее уж действительно как RaZEr говорит, хотя лично мне больше нравится bash, но это уже мелочи :beer:

Naked 08.06.2005 19:24

КАК в этом "классном" Perl'е сравнить две строки??? :help: :help:

RaZEr 08.06.2005 19:28

http://search.cpan.org/dist/perl/pod...lity_Operators

Naked 08.06.2005 19:34

Да уж, а я маленькую подпрограмму написал... :p Спасибо за хорошую книжку (а то на русском ничего толкового нет, а на английском я не додумался поискать :( )

RaZEr 08.06.2005 19:38

Цитата:

а то на русском ничего толкового нет
Да ладно. Тех же переводов со CPAN навалом. Здесь например: http://perl.far.ru/perl/docum/

Naked 08.06.2005 19:43

Да вот вроде из этих русских книг хороших я не нашел...
Кстати, я нашел баг в PHP, если интересно, то он просто текущую директорию свою не знал и писал в корень, я теперь просто ко всем файлам пути полные прописал как мне и советовали... :cool:

RaZEr 08.06.2005 19:47

Цитата:

Кстати, я нашел баг в PHP
Это скорее баг админа :biggrin:

Naked 08.06.2005 20:16

А не подскажешь все-таки как дату получить в Perl. Я использую gmtime(time), но оно что-то мне не тот месяц выдает... и время какое-то странное, если не ошибаюсь, то у нас опережение Гринвича на 3 часа, а gmtime говорит, что на 4... :( :help:

RaZEr 08.06.2005 20:19

Набери date. Если показывает не то время, значит на сервере оно просто не настроено.

Naked 08.06.2005 21:29

Если набираю date, то время показывает правильное время, а если gmtime(time), то какую-то ерунду :(

RaZEr 08.06.2005 21:42

localtime

Naked 08.06.2005 21:50

Все правдивое, а номер месяца 5, а сейчас вроде 6, и date показывает, что июнь... :confused:

RaZEr 08.06.2005 21:58

Возможно месяцы нумеруются от 0 до 11.

Naked 08.06.2005 22:00

ну может, тогда все верно будет...

Ale 08.06.2005 22:25

Меня когда-то вполне устроила Cookbook by O'Reilly, она и щас там - http://mirrors.usaaa.ru:8001/books/p...book/index.htm

Data/time соотв - http://mirrors.usaaa.ru:8001/books/p...ok/ch03_01.htm

Вообще сравнивать даты как строки - идеологически ущербно (хоть и работает), RaZEr прав. Для этого пользуют Epoch seconds, оно-же "дата в Юникс-формате"

RaZEr Hubbitus Виноват, sh имеет больше прав на место "по определению" :beer:


Часовой пояс GMT +4, время: 05:52.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.