Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

Синхронизация в PHP, многопоточность   Найти похожие ветки 

 
Piter ©   (2007-09-25 17:02) [0]

Нужно написать на PHP монитор серверов... Возникают вопросы:

1) скрипт мониторинга выполняется раз в минуту планировщиком. Но если предыдущий запуск еще не завершил свою работу, то смысла запускать по новой нет. Как бы в скрипте обнаружить, что предыдущий скрипт не отработал? Неужели нет никаких встроенных механизмов синхронизации? (семафоры какие-нибудь, мьютексы)

2) поскольку серверов может быть много - не так уж плохо было бы при сканировании запускать несколько потоков. Куда смотреть / читать про реализацию многопоточности в PHP?


 
umbra ©   (2007-09-25 17:10) [1]


> Как бы в скрипте обнаружить, что предыдущий скрипт не отработал?

при старте создается файл, при завершении - удаляется.


> поскольку серверов может быть много - не так уж плохо было
> бы при сканировании запускать несколько потоков.

запускать главный скрипт, который запускает нужное количество копий скрипта, выполняющего задачу


 
Zeqfreed ©   (2007-09-25 18:25) [2]

Лучше игры трехмерные на PHP писать. Почему бы не взять Python, который гораздо удобнее для прикладных задач?


 
Piter ©   (2007-09-25 18:27) [3]

umbra ©   (25.09.07 17:10) [1]
при старте создается файл, при завершении - удаляется


Неужели нету нормальных средств синхронизации?

umbra ©   (25.09.07 17:10) [1]
запускать главный скрипт, который запускает нужное количество копий скрипта, выполняющего задачу


а как запускать сторонний скрипт из PHP?


 
umbra ©   (2007-09-25 18:27) [4]

или perl. Там поточность встроенная и стандартные объекты синхронизации доступны.


 
Eraser ©   (2007-09-25 18:29) [5]


> Piter ©   (25.09.07 18:27) [3]


> Неужели нету нормальных средств синхронизации?

нету )


 
Zeqfreed ©   (2007-09-25 18:36) [6]

> Piter ©   (25.09.07 18:27) [3]

> а как запускать сторонний скрипт из PHP?

http://ru2.php.net/system


 
Piter ©   (2007-09-25 18:51) [7]

Zeqfreed ©   (25.09.07 18:36) [6]
http://ru2.php.net/system


хм... Мне кажется это больше подходит для запуска именно исполняемых файлов! А мне то надо запустить выполнение PHP-скрипта, причем запустить и чтобы управление сразу вернулось...


 
Zeqfreed ©   (2007-09-25 18:59) [8]

> Piter ©   (25.09.07 18:51) [7]

Note: If you start a program using this function and want to leave it running in the background, you have to make sure that the output of that program is redirected to a file or some other output stream or else PHP will hang until the execution of the program ends.

И вообще, по крону кто запрещает запускать сразу несколько экземпляров скрипта?


 
Piter ©   (2007-09-25 19:14) [9]

Zeqfreed ©   (25.09.07 18:59) [8]

я к тому, что можно выполнять исполняемые файлы!!! Я так понимаю с помощью этой комманды PHP скрипт не выполнить.

Zeqfreed ©   (25.09.07 18:59) [8]
И вообще, по крону кто запрещает запускать сразу несколько экземпляров скрипта?


а что они делать будут, эти несколько экземпляров?! Никаких ведь механизмов синхронизации нету в PHP, правильно? Ну есть в базе допустим 50 серверов, которые нужно сканировать. Как скрипт поймет какой именно ему сервер сейчас промониторить?!
Cron тем более этого не поймет.


 
Zeqfreed ©   (2007-09-25 19:18) [10]

> Piter ©   (25.09.07 19:14) [9]

> Я так понимаю с помощью этой комманды PHP скрипт не выполнить.

Еще как выполнить. Кричать зачем? :)

> а что они делать будут, эти несколько экземпляров?!

Запускаться менеджером с различными параметрами, разумеется.


 
Piter ©   (2007-09-25 19:51) [11]

Zeqfreed ©   (25.09.07 19:18) [10]
Запускаться менеджером с различными параметрами, разумеется.


с какими, с различными? Самое то - параметром является идентификация определенного сервера. А тут как?


 
Zeqfreed ©   (2007-09-25 20:11) [12]

> Piter ©   (25.09.07 19:51) [11]

Если нужно обработать несколько сущностей (не знаю что за сервера там у тебя), то просто запускаешь несколько скриптов, каждому передавая параметром ту сущность, которую он должен обработать, и все.

А то лишь бы мудрить с многопоточностью, синхронизацией и бог знает чем еще. Keep it simple, stupid :)


 
Piter ©   (2007-09-25 20:50) [13]

Zeqfreed ©   (25.09.07 20:11) [12]

да откуда Cron"у знать про эти сущности?!

Список серверов не постоянен, их можно добавить через WEB-интерфейс (также как удалить). Список серверов грубо говоря хранится в БД.

P.S. Видимо, все таки написание будет на Perl, так как PHP оказалось чрезмерно убог.


 
фуке   (2007-09-25 21:17) [14]

Проблемы-то нет и в PHP.
Используй файловый лок или LOCK TABLES в Mysql например. Пока заблокирована на запись, второй не сможет писать, будет ждать...
Что касается Perl, то он наиболее убог :-)


 
celades ©   (2007-09-25 21:18) [15]


> P.S. Видимо, все таки написание будет на Perl, так как PHP
> оказалось чрезмерно убог.

:) плохому танцору...


 
tesseract ©   (2007-09-25 21:24) [16]


> Что касается Perl, то он наиболее убог :-)


Так и скажи - лень учить, и нечего на него гнать, php просто обрезок перла - изначально он на нём и написан.


>  Куда смотреть / читать про реализацию многопоточности в
> PHP?


В том же разделе, в каком многопоточность в bat. Из всех приведённых только Python обладает нормальной многопоточностью.


 
Zeqfreed ©   (2007-09-25 21:46) [17]

> Piter ©   (25.09.07 20:50) [13]

Ну неужели надо еще объяснять, что менеджер, который разбирает список сущносйтей и запускает скрипты на выполенение, — суть другой скрипт?

> P.S. Видимо, все таки написание будет на Perl, так как PHP
> оказалось чрезмерно убог.

Убог, как оказалось, не php.


 
фуке   (2007-09-25 22:14) [18]

php просто обрезок перла - изначально он на нём и написан
Интересные новости из старости. Изначально была точка, а потом вселенная :-)
История PHP начинается с 1995 года, когда Расмус Лердорф (Rasmus Lerdorf) создал простое приложение на языке Perl, анализирующее посещения пользователями его резюме на веб-сайте. Затем, когда этим приложением уже пользовались несколько человек, а число желающих получить его постоянно увеличивалось, Лердорф назвал свое творение Personal Home Page Tools версия 1 и выставил для свободного скачивания. С этого момента начался небывалый взлет популярности PHP.

Как это всегда бывает, срочно потребовались доработки и дополнения. Для их реализации Расмус создает новую версию пакета, теперь уже написанную на С. Полученный таким образом инструмент приобретает рабочее название PHP/FI (Personal Home Page / Forms Interpreter -
http://www.phpworld.ru/php/phphistory.php

Понимаешь разницу между простым приложением и серьезной системой?
Да и появился-то он потому, что Perl не устраивал очень многих. PHP очень похож на C, но уж никак не на Perl, хотя и включает некоторые конструкции и Perl оставленные для его любителей.


 
ferr ©   (2007-09-25 22:19) [19]

> [18] фуке   (25.09.07 22:14)

http://www.tiobe.com/tpci.htm


 
Юрий ©   (2007-09-25 22:34) [20]

> [17] Zeqfreed ©   (25.09.07 21:46)

Zeqfreed, ты же в теме. :)
Что без толку спорить, послать на phpclub и наблюдать.


 
Zeqfreed ©   (2007-09-25 22:36) [21]

> Юрий ©   (25.09.07 22:34) [20]

>  ты же в теме

Хотелось бы верить. А послать мы всегда успеем :)


 
фуке   (2007-09-25 22:39) [22]

>ferr
Все правильно
PHP 10.204% +1.08%   A  4 место
Perl 5.416% -0.01%   A  6 место
Смешно, что DELPHI на 14-ом, но на западе это так.

Есть еще:
Программисты переходят на Linux По данным Evans Data
Самым распространенным скриптовым языком программирования остается Javascript, значительно опережающий по популярности PHP, Ruby и Python
http://semen.iplot.ru/category/programmirovanie/programmisty_perehodyat_na_Linux.html
Perl неизвестно где...


 
tesseract ©   (2007-09-25 22:49) [23]


> Perl неизвестно где...


В даминистрировании. PHP - суть примитив который устраивает 90% строителей домашних страничек, это пришлёпка для SkriptKiddie, но никак не язык программирования.  Покажи мне админа / программиста  с зарплатой больше хотя-бы 1000 уёв ?

Опросы вещь интересная,
"100% Россиян пользуються интерентом - это подтвердил опрос проведённый в интернете" .

ЗЫ: По хорошему в России самый распространянный язык - 1с :-)


 
Zeqfreed ©   (2007-09-25 23:03) [24]

> tesseract ©   (25.09.07 22:49) [23]

Вот оно как оказывается бывает. Хорошо, что я живу не в вашем мире.


 
Piter ©   (2007-09-26 03:39) [25]

Zeqfreed ©   (25.09.07 21:46) [17]
Убог, как оказалось, не php


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

Файловый лок как способ синхронизации - о чем говорить...

Перл, питон или лучше C под nix, а ПХП максимум как реализация вывода из БД.


 
Zeqfreed ©   (2007-09-26 07:25) [26]

> Piter ©   (26.09.07 03:39) [25]

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


 
Piter ©   (2007-09-26 11:11) [27]

Zeqfreed ©   (26.09.07 7:25) [26]
Вместо того, чтобы понять немного отличающийся от привычного тебе подхода к построению приложений


я могу понять немного не такой, но грамотный подход. Если ты хочешь мне сказать, что файловый лок есть НЕМНОГО ДРУГОЙ ПОДХОД к синхронизации - о чем говорить?

Мне уже давно говорили, что ПХП убог, теперь я в этом убедился... В отличии от Perl"а, например.

Также как убога MySQL по сравнению с каким-нибудь постгрессом.


 
VictorT ©   (2007-09-26 12:32) [28]

А как это релизуется в Perl-е?


 
tesseract ©   (2007-09-26 12:47) [29]


> Вот оно как оказывается бывает. Хорошо, что я живу не в
> вашем мире.


Уж слава богу...... Уж в моем мире и так куча народу с постпубертанным периодом.

ЗЫ: когда напишешь на PHP ПРИЛОЖЕНИЕ и зупуздыришь его в трей тогда может мнение перемениться. :-D


> Вместо того, чтобы понять немного отличающийся от привычного
> тебе подхода к построению приложений,


Personal Home Page - какие к @#$@!@#%% подходы к написанию приложений ?


 
Юрий ©   (2007-09-26 12:49) [30]

> [29] tesseract ©   (26.09.07 12:47)
> Personal Home Page

PHP: Hypertext Preprocessor.


 
фуке   (2007-09-26 21:32) [31]

Первая версия PHP расшифровывалось как Personal Home Page, то есть набор скриптов для создания домашней странички. Впоследствии эта аббревиатура стала расшифровываться как PHP-Hypertext Preprocessor (вот такое рекурсивное определение, подобное Linux — Linux Is Not UniX).

Потом возможности скриптов были значительно расширены. Был написан процессор сценариев, добавлены средства для обработки HTML-форм и возможность включения SQL-запросов прямо в текст странички. Модуль обработки форм был назван FI (Form Interpreter), новая версия получила название PHP/FI, а позднее — просто PHP2. Это произошло в середине 1995 года.

В PHP3 синтаксис сценариев PHP был приведен к более стандартному виду и добавился API. На данный момент вышла уже 5-я версия PHP, но по-прежнему широко используется и более младшие версии — PHP3-4.

В PHP не обязательно использовать именно MySql. Можно и другие. Самое простое делать синхронизацию используя средства БД. Собственно так делают большинство топ каталогов. Как иначе обновлять данные поступающие от сайтов?

А в Perl с потоками не все так просто
http://xpoint.ru/forums/programming/perl/misc/thread/34748.xhtml
Лучше не стоит :-)


 
tesseract ©   (2007-09-26 21:49) [32]


> фуке   (26.09.07 21:32) [31]


И что ? Что этот перл значит - PHP как был примитивом ( ограниченным набором возможностей (С) Алгоритмика, раз ты не учил) так и останеться. Ruby, Asp.NET , JSP, ZOPE  в разы его по возможностям превосходят.


 
palva ©   (2007-09-26 22:39) [33]

tesseract ©   (26.09.07 21:49) [32]
Любой язык имеет ограниченные возможности. Любой язык является примитивом.
Asp.NET это не язык


 
homm ©   (2007-09-26 22:48) [34]

> [16] tesseract ©   (25.09.07 21:24)
> php просто обрезок перла - изначально он на нём и написан.

Теперь то что с того?

> ЗЫ: когда напишешь на PHP ПРИЛОЖЕНИЕ и зупуздыришь его в
> трей тогда может мнение перемениться. :-D

С нетепрением ждем рассказ, как запузырить в трей приложение на перле.


 
tesseract ©   (2007-09-27 10:24) [35]


> С нетепрением ждем рассказ, как запузырить в трей приложение
> на перле.


Вот этот COM поддерживает, можно без проблем запуздырить :  
http://www.activestate.com/


> Asp.NET это не язык


Ну CLR - он вообще интересен, на 10-15 языках писать можно.


 
umbra ©   (2007-09-27 10:30) [36]


> как запузырить в трей приложение на перле

в винде - легко.


 
Style ©   (2007-09-27 11:31) [37]

Че вы на ПыХыПы наизжаете - изыг еще молодой!
В 4ой версии даже с объектами нормально работать невозможно было и только
в 5ке существенно изменили модель ООП.
Да есть некоторые неудобства связанные с синхронизацией, но в принципе все решаемо. Можно использовать не только lock таблицы или файла, а например переменные окружения (putenv, getenv).


 
DVM ©   (2007-09-27 11:33) [38]


> > как запузырить в трей приложение на перле
>
> в винде - легко.

Да и на перле несложно. Даже BAT-файлом можно.


 
umbra ©   (2007-09-27 11:48) [39]


> Да и на перле несложно

имелось в виду, что на перле можно написать скрипт, имеющий окно и иконку в трее. Конечно, это делает не сам перл, а доп модули, работающие с виндовскими окнами.


 
homm ©   (2007-09-27 22:34) [40]

> [39] umbra ©   (27.09.07 11:48)
> Конечно, это делает не сам перл, а доп модули, работающие
> с виндовскими окнами.

Тогда при чем там перл? ПХП тоже модули поддерживает.


 
DVM ©   (2007-09-27 23:38) [41]


> Тогда при чем там перл? ПХП тоже модули поддерживает.

на ПХП тоже можно иконку в трей.


 
homm ©   (2007-09-27 23:49) [42]

tesseract ты понял? Держи слово, меняй мнение :)


 
umbra ©   (2007-09-28 08:33) [43]


> Тогда при чем там перл? ПХП тоже модули поддерживает.

так пользуйтесь пхп без модулей, а я буду пользоаться перлом без доп. модулей. Тогда будем сравнивать. В перле есть потоки, в перле есть IPC, есть арбота с файлами и папками и много чего другого.

P.S. Я, собственно, не нападаю на пхп, а защищаю перл.


 
homm ©   (2007-09-28 14:49) [44]

> [43] umbra ©   (28.09.07 08:33)
> Я, собственно, не нападаю на пхп, а защищаю перл.

Тогда это не по адресу. В этой ветке публичная казнь над ПХП идет :) У перла тут все свои.


 
DVM ©   (2007-09-28 14:52) [45]

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


 
имя   (2007-10-07 22:12) [46]

Удалено модератором


 
имя   (2007-10-07 22:23) [47]

Удалено модератором


 
Dmitry S ©   (2007-10-16 17:35) [48]

Я, както, писал модуль для php, для поддержки потоков под виндами - работало... Под линухом писал примитивный web-сервер: на базе функции sock_select и, другой вариант, на базе pcntl_fork.
Все возможно, если захотеть!



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.048 c
2-1193141803
Azize
2007-10-23 16:16
2007.11.18
StringGrid


15-1192090157
botaniQ
2007-10-11 12:09
2007.11.18
Помогите найти алгоритм SHA-1


2-1193423882
alexlp
2007-10-26 22:38
2007.11.18
Сортировка ListView e-mail


15-1192485282
Tirael
2007-10-16 01:54
2007.11.18
по мотивам соседней ветки...


2-1193111836
031178
2007-10-23 07:57
2007.11.18
Поиск в TreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский