| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как из ПХП-скрипта запустить задание пл-ка виндовс |
| Автор: Win MK 32 1.4.2009, 19:30 |
| Это возможно? П.С. У меня английский язык сломался на компьютере. Прошу извинить. Добавлено через 1 минуту и 4 секунды Речь идет о запуске задания вот этого самого планировщика: http://setegnom.com/node/925 |
| Автор: skyboy 1.4.2009, 20:54 |
| когда выяснишь, как из командной строки безо всякого PHP "запустить задание планировщика", обрати внимание на функции http://ua.php.net/system, http://php.net/shell_exec, http://php.net/exec или http://php.net/passthru |
| Автор: Win MK 32 1.4.2009, 22:06 | ||||||
Сумел вроде. Но когда жму энтр вылезает окошко с примерно таким же текстом, как и тот, что пишется в консоле:
Если на это можно забить, то замечательно. Но что-то у меня сомнения. Добавлено @ 22:07 fwrite.php
Добавлено @ 22:18
Как только не пробовал - во всех вариантах ответ один - как на скриншоте. Но при этом скрипт выполняется, что интересно. Может быть подскажите? |
| Автор: Win MK 32 1.4.2009, 23:08 |
Да. Приступая ко второму этапу, не понирмаю как вызвать то же самое из PHP. Перепробовал все эти функции. |
| Автор: skyboy 2.4.2009, 00:19 |
| я вот перечитал сообщение твое первое и глубоко задумался. есть PHP-скрипт. есть планировщик, в определенное время выполняющий этот PHP-скрипт. это работает. а чего не хватает? |
| Автор: Win MK 32 2.4.2009, 00:49 |
| skyboy, надо, чтобы не планировщик выполнял, а тот же PHP. Только не иклюдом, а через сервер. Как бы чтобы сервер сам запускал скрипт. Это нужно для того, чтобы трафик тратился на сервере, а не в браузере... |
| Автор: skyboy 2.4.2009, 09:30 | ||
*делает большие глаза* если под "инклюдом" ты понимаешь include(сложно представить, как ещё можно понимать "include") из одного php-файла другого, то при чем тут траффик браузера? |
| Автор: IZ@TOP 2.4.2009, 13:17 |
| skyboy, ему, скорее всего, просто нужно запустить на сервере по расписанию скрипт - т.е. по крону. Здесь же, он пытается, опять же, как я понял, запустить на виндовой машине скрипт при помощи шедулера, который, в свою очередь, вызывает скрипт на сервере...? |
| Автор: Win MK 32 2.4.2009, 15:24 |
| IZ@TOP, спасибо что вы прониклись моей затеей!!! Помогите пожалуйста. Не обращайте внимание на то, что звучит это странно Но последний скрипт не обязательно шелдур должен вызывать. Сойдет просто запуск скрипта. Но сервером от его имени как бы!!! |
| Автор: IZ@TOP 2.4.2009, 15:38 |
| Win MK 32, я скорее проникся не самой идеей, а ее ужасающей надуманностью. Надеюсь, под сервером Вы понимаете хостинг-площадку, которая работает под управлением *nix систем. Если да, тогда все, что Вам нужно, это написать заявку на крон или создать задание смамостоятельно в панели администрирования Вашего хостинга. Что такое крон, читайте на http://ru.wikipedia.org/wiki/Crontab. |
| Автор: Win MK 32 2.4.2009, 23:31 | ||
Я хостер. Сервер под управлением Windows. В локальной сети. Крон мне не нужен, ибо не расписание должно инициировать запуск скрипта, а пользователь!!! Вы мне поможете? :( |
| Автор: elCreator 3.4.2009, 00:11 | ||
т.е., запуск скрипта должен происходить через некоторое время после действия пользователя? тогда
|
| Автор: Win MK 32 3.4.2009, 05:58 | ||
| elCreator, нет!!! Нужно чтобы пользователь дал команду запустить скрипт через другой IP, то есть через сам сервер. Я уже просто не знаю как еще говорить. Что-то вроде
Добавлено через 39 секунд Помогите пожалуйста. |
| Автор: lelik133 3.4.2009, 08:20 |
| говорить надо так чтобы другие понимали, вам пытаются же объяснить что задача ваша неверна еще на этапе формулировке. как вы себе представляете php должен обратиться к apache на другом хосте, тот ему должен отдать код, именно исходный код (!), а не сгенерированный вывод как обычно, а php его должен интерпетировать. ИМХО бред, хотя возможно я не что-то недопонял, т.к. ясно у вас объяснить не получается. |
| Автор: Win MK 32 5.4.2009, 21:58 |
| Я очень старался объяснить. Не надо вникать в разумность этой задачи. Мне очень нужно ее решить. Но как? 1) Пользователь загружает run.php 2) <?PHP shell("W:\server\usr\bin\php.exe W:\server\home\192.168.55.1\www\forums\i63\fwrite.php"); ?> 3) На сервере сразуже выполняется fwrite.php shell - Это я например пишу, эта функция не работает в таком виде, как я написал. Неужели плохо объяснил? Неужели это не возможно? Ответьте пожалуйста. |
| Автор: skyboy 5.4.2009, 22:29 |
не, ну, правда, непонятно. ты можешь более абстрактно, без технических подробностей пояснить? пока что у меня сложилась такая картина: есть отдельный сервер(в интернете?), на котором планировщиком ренулярно запускается какой-то скрипт. есть другой сервер(в локальной сети?), к которому может обратиться пользователь. надо чтоб пользователь, обратившись ко второму серверу в локальной сети, запустил таким образом тот же скрипт, что запускает планировщик на первой сервере? |
| Автор: Win MK 32 6.4.2009, 04:17 |
| skyboy, все даже еще проще. Сервер один и он локальный. А так, все остально - верно. |
| Автор: lelik133 6.4.2009, 08:19 |
| если сервер один и run.php и fwrite.php расположены на нем, то что мешает сделать ссылку с site.ru/run.php на site.ru/wfrite.php ? или они на разных виртуальных хостах? или run.php выполняется вообще вне apache, а из консоли? |
| Автор: skyboy 6.4.2009, 09:16 |
| тогда спрошу ещё раз: что мешает из скрипта, к которому обращается пользователь, делать include скрипта, который содержит некоторое выполняемое регулярно задание? твои слова насчет "траффика" ничего не объясняют и вообще наводят на мысль, что ты не понимаешь, как работает include. |
| Автор: Win MK 32 6.4.2009, 13:14 | ||||
Если сделать Include, то пользователь вызвавший "родительский" URL на локальнмо сервере заинклюдит скрипт, который будет обращаться в интернет исходящим соединением. А у пользователя гарантированно не будет интернета. Поэтому не сработает. Вместо этого надо, чтобы сервер сам запустил скрипт fwrite.php, но не по расписанию, а тогда, когда пользователь войдет в run.php. Добавлено через 2 минуты и 57 секунд Это возможно? |
| Автор: bars80080 6.4.2009, 13:24 | ||
почему? и почему этого не будет, если:
|
| Автор: skyboy 6.4.2009, 13:34 |
это твой второй скрипт, который и по расписанию тоже выполняется, будет обращаться к ресурсам в интернете? если нет, то объясни понятнее, в отрыве от технических подробностей. если да, то при чем тут интернет-доступ клиента, если скрипт будет выполняться на сервере? |
| Автор: Win MK 32 6.4.2009, 13:57 | ||||||
bars80080, почему будет обращаться в интернет исходящим соединением? Потому что так я сделал... Не понял к чему вопрос...
Это тоже будет... Только если пользователь не имеет доступа в интернет, а сервер имеет, логично поручиить исходящее соединение серверу...
Да. Добавлено через 3 минуты и 59 секунд
Я бы хотел бы, чтобы был не при чем. Для этого нужно осуществиить то, что я пытаюсь сформулировать. А пока исходящее соединение инициилихирует браузер при помощи псевдоран.php ничего не выйдет, потому что у пользователя интернета нет... На сервере есть интернет. Я могу на сервере в Опере поставить "обновлять каждые 5 минут". Могу сделать эта планировщиком. А мне нужно, чтобы запуском распоряжался тот, кто зайдет в run.php |
| Автор: Win MK 32 6.4.2009, 14:19 |
| В дали от технических подробностей... Пользователь без интернета заходит на локлаьный сервер в run.php. При этом в базу данных/файл на локальном сервере поступает информация из fwrite.php из Интернтета. Сервер сам туда стучиться, но по команде из run.php. Далее уже не важно. Можно например на там же ajax прикрутить уведомление о том, что данные получены из Интернета. Ну неужели я не смог обяснить что хотел? :(((( |
| Автор: bars80080 6.4.2009, 15:12 | ||
одновременно? так есть интернет или нет, если одновременно? и зачем тогда планировщик? не одновременно? т.е. нужен некий сэйвер запросов и ответов? т.е. я захожу на локальную страницу, посылаю запрос, мне в ответ - соединения нет, обратитесь позже. через некоторое время захожу опять, а мне страница открывается с моим запросом и готовым ответом, потому что пока я бродил где-то, сервер по своей инициативе (через планировщик) извлёк из БД мой запрос, обратился и получил ответ, который и сохранил так что ли? |
| Автор: Win MK 32 6.4.2009, 18:57 | ||
Ну с некоторым запазданием наверное. Если одновремнно, то совсем хорошо. Это не главное. Насчет одновременно - пока пользователь не зайдет в run.php, ничего не произойдет. На сервере есть, у пользователя нет.
Никакого планировщика. Надо чтобы пользователь сам отдал приказ выполнить fwrite.php на сервере. Без планировщика! |
| Автор: lelik133 6.4.2009, 21:11 | ||
а как по вашему пользователь "отдает приказ" на выполнение run.php? наверное заходит по ссылке http://vash_server/run.php если так то что тогда мешает дать ему ссылку с http://vash_server/run.php на http://vash_server/fwrite.php или просто подключить fwrite.php инклюдом? если ваш сревер в локалке и на нем выход в инет есть, какая разница есть он у пользователя или нет, это тут вообще не причем. |
| Автор: Win MK 32 6.4.2009, 21:24 | ||||||||
Конечно.
Мешает то, что у пользователя не будет интернета для выполнения такого рода кода в fwrite.php:
Но приведенный мной код не дает результатов, если этот пользователь вызывает этот скрипт не имея соединения с интернетом. Я прав? Другое дело если мне скажут: - Админ, у тебя на сервере есть интернет. Запусти скрипт, пожалуйста. Так вот я и хотел бы, чтобы пользователи могли запустить скрипт при помощи другого скрипта. Инклюды тут не при чем. |
| Автор: lelik133 6.4.2009, 21:35 |
| да причем тут интернет у пользователя!!! если скрипт выполняется на сервере, а клиенту-браузеру только отдается сгенерированный код? абсолютно все равно есть у него этот самый интернет или нет. такое ощущение что вы понимая основ клиент-сервеной технологии, пытаетесь списать на отсутствие интернета у пользователя свое не умение отладить свой же код. |
| Автор: skyboy 6.4.2009, 21:45 | ||
PHP выпоняется на сервере! соответственно, если PHP-скирпт инициирует запрос к интернет-ресурсу, то важно, чтоб подключение к интернету было у сервера, а не у клиента. нет, ты не прав. с чего ты вообще это взял? |
| Автор: Win MK 32 6.4.2009, 22:13 |
| Я это взял с того, что у пользователей с медленным интернетом JS подгружается из Интернета в локальный форум на моем сервере медленно. А у тех, у кого интернета нет и вовсе не загружается. Добавлено через 4 минуты и 3 секунды Я буду рад, если вы правы, а я нет. Как убедиться в том, что сервер отправляет GET/POST исходящий запрос за счет своего трафика? Просто чтобы успокоиться... |
| Автор: Win MK 32 6.4.2009, 23:59 |
| Спасибо большое за потраченое время и проявленное внимание. Теперь все стало понятно. |
| Автор: skyboy 7.4.2009, 08:16 |
| (надуманная) проблема решена? |
| Автор: Win MK 32 7.4.2009, 08:59 |
| Да |