| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Запуск на выполнение пхп скрипта |
| Автор: MisterSER 12.8.2009, 21:50 |
| Я щас только изучаю веб програмирование и возник такой вопрос: Возможно ли например с помощу тригеров запустить на выполнение пхп скрипт, например когда определеное значение равняетса другому значению? = ) P.S. альтернатива то ли запускать каждую минуту скрипт проверки, то ли с поможу тех же пхп скриптов когда изменякш значение отслеживать ето. |
| Автор: Ипатьев 12.8.2009, 22:31 |
| А откуда это значение берется? Из пхп скрипта? |
| Автор: MisterSER 12.8.2009, 23:36 | ||
оба значения записаны в бд, также возможно оба значения ето время, одно когда должен выполнитса, второе текущее, но ето только один из возможних случаев про который я думал спросить потом))) впринципе имелось в виду два обичных числа, которые в одной строчке но в разных "списках" записаны в бд, ну и сверить все строчки = ) |
| Автор: Ипатьев 12.8.2009, 23:48 |
| какой смысл сверять их тогда, когда они никому не нужны? а когда понадобятся, то свериь обычным порядком. мне кажется, тут ни запуск пхп, ни триггеры не нужны |
| Автор: MisterSER 13.8.2009, 00:03 | ||
проблема в том, что какраз должны в фоновом режиме выполнятса некоторые действия при некоторых условях = ) вопрос был конкретен, возможно ли это тригерами, ну или другими инструментами MySQL, или даже возможно в других базах, если чесно, то я еще во всем не разобралса и могу плохо шарить |
| Автор: skyboy 13.8.2009, 00:10 |
| MisterSER, потенциально это возможно(написание собственной платформозависимой UDF), но я не вижу в подобном смысла. БД - это хранилище данных, а не платформа для реализации логики. А триггеры используются для поддержания логической целосности данных, а не для реализации логики приложения. Это как на PHP писать 3D-игры - потенциально возможно(например, через ming генерировать через флеш, ага), но сильно уступает альтернативным решениям(C/C++, к примеру) и потому никому не интересно. *телепатический режим включен*если тебе надо сделать планировщик заданий, то CRON давно уже придуман и давно реализован. |
| Автор: MisterSER 13.8.2009, 00:16 | ||
с помощу крона можна запускать допустим ежеминутною проверку, про что я писал в "пс" в первом посте)) мне не нужно с поможу тригеров или других инструментов делать махинации с даными, мне просто нужно чтоб при оприделеных условиях запускалса пхп скрипт, который в свою очередь и делает махинации с даными = ) P.S. тоесть с помощу тригеров никак нельзя?) ну там например, запуск приложение(интерпретатора пхп) с параментром пути к скрипту, или что-то в этом роде = ) |
| Автор: sir_nuf_nuf 13.8.2009, 01:16 |
| Попробуйте функцию system, хотя я не уверен - вполне возможно, что это функция клиента mysql а не сервера mysqld. А вообще запускать внешние программы по тригеру - это зло! Вы представляете сколько раз триггер может сработать при обновлении таблицы? И каждый раз будет запускаться новый пхп. 90% - вы можете обойтись встроенными средствами. 99% - вы можете обойтись php + cron и это будет менее затратно. P.S. триггеры в mysql вообще убогие - у них множество ограничений. Например dynamic sql не работает из них. |
| Автор: MisterSER 13.8.2009, 01:48 | ||
Вот вы представте, значение одной ячейки должно быть 5, щас оно 0, через 10 мин оно стало 1, еще через 3 мин оно стало 2, через 21 мин стало 3, через 16 мин стало 4, и наконец через 10 мин стало 5. Тут уже должен запуститса скрипт и значение станет опять 0... Поскольку не возможно точно узнать когда оно может стать 5, нужно будет запускать скрипт проверки каждую минуту... итого 61 запуск, а потом еще по одному каждую минуту... Хотя тут можна сделать проще, отслежывать в скрипте, который изменяет это значение... правда есть вероятность что сервер упадет после того, как значение станет 5, но до того, как начнут виполнятса нужные действия ладн, другой лучший пример, но уже со временем. Вот припустим, когда будет 3 часа должен выполнитса скрипт, далее потом припустим в 3:30, потом в 4:44, потом в 4:50... поскольку зарание не известо когда имено надо будет выполнить, прийдетса с помошу крона запускать проверку каждую минуту... а тепер представим что таких ячеек 30-50-200...)) с помощу крона и еже-минутной проверки можна релизовать, без особых проблем неучитовая нагрузку, но рациональней будет использовать встроеные тригеры, если они конечно будут позволять это делать... вот в этом и вопрос = ) также если позволяют, очень желательно детально написать как, с небольшым примером = ) P.S. я вхожу в тот один процент = ) P.S.2 этот вопрос как и теоретический, так и практический)) |
| Автор: sir_nuf_nuf 13.8.2009, 11:55 |
блин.. как говорил один персонаж "держаться больше нет сил" запуститЬсЯ ... выполняться что вы хотите делать по изменению значения ? как альтернатива: напишите триггер, который будет писать в отдельную таблицу | id измененной строки | время изменения | Тогда у тебя будет небольшая таблица. Скрипт по крону - раз в минуту - это не часто. Это не нагрузка. Главное, что бы он не делал тяжелых запросов. Если ячеек не много, то он будет отрабатывать моментально. P.S. кроме того, если вы хотите запускать PHP из mysqld - то он будет запускаться с правами юзера mysql - это может породить проблемы. |
| Автор: MisterSER 13.8.2009, 14:39 | ||||||||
Я очень извеняюсь, мой родной язык украинский, а по рус. яз. у меня в школе, увы, было примерно 2 по 5 бальной системе...(( (против руского языка не имею ничего против, просто хз чо так...) (для примера по укр было примерно 4 по 5) (примерно, это потому что у нас 12 бальная система еще раз сори за мою неграмотность, и спасибо за желание помоч при этом = ))
ну я впринципе согласен что это отностельно не большая нагрузка, но все же больше чем теоретически могла быть = )
как я уже говорил, когда значение будет равно или другому значению или текущему времени, то должен выполнитса пхп скрипт, который делает свою фоновою работу = )
это немношко не то что надо...) |
| Автор: Ипатьев 13.8.2009, 14:59 |
| А почему нельзя описать реальные данные и реальные операции над ними? Ведь наверняка задача известная, и имеющая стандартное решение. Если человек "только начинает изучать веб-программирование", то откуда такая тяга к абстрактным задачам? Откуда такая уверенность в исключительности своей задачи ("я вхожу в тот один процент")? На начальном этапе изучения мы часто совсем неправильно представляем себе пути решения. Почему бы не предоставить это специалистам? Зачем эта игра в кошки-мышки? |
| Автор: MisterSER 13.8.2009, 15:18 |
| 2Ипатьев, ну наверное почти все возможные пути решение я знаю, и почти все из них я пысал выше. (еще есть варианты делать проверку когда ктото открывает определьоною старицу, ане у фоновом режиме, ног это не подходит = ) ) Просто как писал в первом посту, я не знаю: "Возможно ли например с помощу тригеров запустить на выполнение пхп скрипт?", и если да, то как)) если это не возможно, вполне пододут и другие варианты, как например ежеминутная проверка)) мне просто нужно знать ответ на один вопрос, и если да, то как, альтернативы я и сам знаю)) |
| Автор: Ипатьев 13.8.2009, 15:30 |
| Ну как это "не подходит", если это стандартное решение? Все делают именно так. Никаких проблем с этим нету. |
| Автор: MisterSER 13.8.2009, 15:43 | ||
для стандартных условий да, для нестандартных может и нет = ) ___ и давайте ближе к теме, есть же конкретный вопрос вопрос не заключаетса в поиске альтернатив, например с помощу крона)) альтернативы разве что среди встроеных средства бд, если они вообще есть = ) |
| Автор: Ипатьев 13.8.2009, 15:58 |
| Ну вот опять, я не в первый раз встречаю это "конкретный вопрос". При том, что вопрос этот - "как надеть штаны через голову?", Требовать-то ответа на него можно... но получить его будет большой удачей. Желаю успехов. |
| Автор: sir_nuf_nuf 13.8.2009, 16:07 |
| MisterSER, сорри.. PHP навел на мысль о школьнике-горе-программисте. Про ваш родной язык как-то не подумал =) Нет, стандартными средствами нельзя запустить внешнюю программу из тригера. Однако, если вам нужно именно такой подход разберитесь как писать http://dev.mysql.com/doc/refman/5.0/en/adding-udf.html для MySQL. Однако это требует знания C, требует понимания того как запускаются процессы в OS и еще нужно будет постараться что бы это было переносимо. Или можете погуглить по словам "mysql trigger external programm" и "mysql udf run external programm" Удивительно но эта идея не вам первому пришла в голову. |
| Автор: MisterSER 13.8.2009, 16:08 | ||||
я конечно вас уважаю, но всеже прошу не щитать меня за идиота, который вместо того, чтобы пощитать 2+2, делает примерно такую вещь: корень( (3*3)^2\81 + 15 ) если бы мне надо были обчыные решения, я бы не парилса, и не писал бы здесь... Добавлено @ 16:14
большущее спасибо, хотя я таки школьник(последний, 11 клас) = ) я вообще когдато учил с++, думаю можна было бы чисто из интереса разобраться, но думаю легше будет через ежеминутную проверку, та и хостинги неразрешат подключать свой "модуль"... больше спасибо всем, кто потратил на меня время, тему можна закрыть)) P.S. я подозревал что я не первый |
| Автор: Ипатьев 13.8.2009, 17:16 |
| Я никого не "считаю за идиота". И попрошу такими словами не кидаться. Самомнение - да, завышенное. Но это со временем пройдет. Возможно. |