Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запуск скрипта php через командную строку по времени
 
 автор: Svetlanka_87   (19.10.2009 в 21:21)   письмо автору
 
 

Добрый день, меня зовут Света. Я уже не первый год занимаюсь программированием на php, но с данной проблемой столкнулась совсем недавно..
Суть такова:
Имеется 2 компьютера на первом стоит операционка Windows, на втором Linux. Необходимо передать текстовый файл с компьютера (Windows) на компьютер (Linux). Далее, после того как файл окажется на компьютере под управлением Linux, нужно запустить скрипт на php, который обработает этот текстовый файл. Сложность заключается в том, что файлы передаются через указанный промежуток времени (например каждые 60 минут), скрипт же должен этот файл обработать и занести данные в БД, после чего удалить файл. То есть сам скрипт также должен работать через указанный промежуток времени.
Я пробовала написать bat-файл, в котором указала следующее:

"C:\www\usr\php.exe" php "C:\www\localhost\www\parser.php"

Запись в базу не происходит, следовательно скрипт не работает.. Однако при запуске этого же скрипта в браузере все отлично выполняется (то есть ошибки в скрипте нет).
Таким образом существуют следующие проблемы:
1. Как запустить скрипт через командную строку (желательно на Linux, но можно и под Windows), если мы знаем путь к php.exe и к самому скрипту (пути не совпадают).
2. Как это сделать в бесконечном цикле с интервалом выполнения N-минут
3. Существует ли возможность передачи файла с одного компьютера на другой через сокеты.
Пожалуйста, ребята, если кому-то близка эта тема, не оставьте вопрос без внимания, я не знаю как поступить в данной ситуации..
Всем заранее спасибо!!!!!!!!!!!

  Ответить  
 
 автор: Trianon   (19.10.2009 в 22:09)   письмо автору
 
   для: Svetlanka_87   (19.10.2009 в 21:21)
 

регулярное исполнение заданий решается с помощью планировщика операционной системы
(планировщик windows либо cron [или его альтернативы] в случае linux)

Какие могут встретиться неочевидные моменты.

При выполнении php.exe может быть выбрана совершенно другая исполнительная среда (текущий каталог, файл конфигурации php.ini, пользователь, от имени которого выполняется процесс)
Запуск php.exe (в случае windows) или php (в случае linux) с параметром --help и переназначением потока в файл
php.exe --help >C:\phphelp 
позволит уточнить параметры, которыми можно указать размещение файла конфигурации , да и вообще полезно научиться выполнять php , имея возможность анализировать результирующий поток хотя бы в целях отладки.

При запуске может оказаться, что из-за изменения конфигурации отключились те или иные модули (в частности - модуль связи с mysql) : методика поиска проблемы - как при установке sql-клиента в общем случае.

Текущий каталог будет продиктован bat-файлом, который запускает процесс.

С linux всё примерно то же самое - конфигурация, текущий каталог, права пользователя на доступ к каталогам и файлам, и в частности к файлу самого php

  Ответить  
 
 автор: Svetlanka_87   (19.10.2009 в 22:25)   письмо автору
 
   для: Trianon   (19.10.2009 в 22:09)
 

Большое спасибо!!!
Именно отчет о том что не подключены модули и выдает командная строка после запуска запроса.
Как это можно исправить?
Заранее спасибо.

  Ответить  
 
 автор: Trianon   (19.10.2009 в 22:59)   письмо автору
 
   для: Svetlanka_87   (19.10.2009 в 22:25)
 

http://softtime.ru/forum/read.php?id_forum=3&id_theme=40855

  Ответить  
 
 автор: Svetlanka_87   (19.10.2009 в 23:09)   письмо автору
 
   для: Trianon   (19.10.2009 в 22:59)
 

Это все замечательно, но у меня стоит Denwer, и все библиотеки подключены автоматически. Более того, при запуске через браузер все работает отлично, следовательно в php.ini исправлять ничего не нужно.
Ошибка об их отсутствии выдается лишь когдя я пытаюсь запустить скрипт через командную строку.

я пишу следующее:

php z:\home\localhost\www\parse.php

и после нажатия на Enter выдается 5 строк ошибок в которйх указано что не найдены библиотеки mysql, и прочие.
Как решить эту проблему? Почему он их не обнаруживает когда они есть?
Заранее спасибо.

  Ответить  
 
 автор: Trianon   (19.10.2009 в 23:14)   письмо автору
 
   для: Svetlanka_87   (19.10.2009 в 23:09)
 

Значит нужно сделать, чтобы php.ini, который применяется в контексте Денвера, использовался бы и при запуске из командного файла (и в дальнейшем - из-под планировщика)

Да... насчет денвера и автоматического подключения...
Это "автоматическое" подключение обеспечено теми же самыми конфигурационными файлами, что и любая ручная настройка. Никаких сверхъестественных приемов в денвере нет.

  Ответить  
 
 автор: Svetlanka_87   (19.10.2009 в 23:23)   письмо автору
 
   для: Trianon   (19.10.2009 в 23:14)
 

Спасибо!!!! Все работает!))
я сменила в php.ini путь к папке с расширениями на относительный и всё!))
Спасибо!!!!!

  Ответить  
 
 автор: Zend72   (19.10.2009 в 22:17)   письмо автору
 
   для: Svetlanka_87   (19.10.2009 в 21:21)
 

Запускать скрипт через определённый промежуток времени? CRON вам в помощь (существуют версии как для linux так и для windows)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования