Автор Тема: Php и нещо подобно на threads при java  (Прочетена 2676 пъти)

PAIN1

  • Напреднали
  • *****
  • Публикации: 432
    • Профил
Съществува ли подобно нещо в php, защото не намирам, поне не със същото име?
Активен

  • Гост
Php и нещо подобно на threads при java
« Отговор #1 -: May 10, 2006, 20:35 »
До колкото работя на тях (а на мен това ми е работата) мисля, че в пхп няма нишки - пхп е скриптов език, а за  нишки са необходими обекти! Не че в пхп няма такива, но не са така мощни и добре организирани. Все пак ако греша и намериш инфо, постни тук за да се науча и аз. За какво са ти, мога да помогна.
Активен

PAIN1

  • Напреднали
  • *****
  • Публикации: 432
    • Профил
Php и нещо подобно на threads при java
« Отговор #2 -: May 10, 2006, 22:00 »
за спорта реших си напиша прост чат клиент.
На Java съм го писал това, но тук нещо не мога да се усетя.
Клиента трябва едно временно да слуша на сокета си и да чете, но как да го накарам и да слуша и клавиатурата, оставя ли го да чака за вход от клавиатурата ще си седи там, та търся начин двете неща да работят паралелно.
Ако изобщо се изказвам правилно .....
Сега се опитвам да се обясня какво е това fork при php, но не намирам свястна и пълна документация. Опитвам се да разбера и това pcntl (от едното стигнах до другото и третото, но каква им е връзката и дали ще ми свършат работа).
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Php и нещо подобно на threads при java
« Отговор #3 -: May 12, 2006, 10:46 »
Михаиле, изобщо не си прав, че за да има поддръжка на нишки ти трябват обекти. Двете неща нямат нищо общо.

Има библиотеки за работа с нишки на C (примерно pthread), който в никакъв случай не е обектно-ориентиран език.


По въпроса - fork() прави следното - създава нов процес, копие на родителския (този, от който се извиква fork()) като връща на процеса-родител идентификатора на новия процес, а на процеса-дете връща 0.

$ man fork

В PHP виждам, че функциите за контрол на процеси са с префикс pnctl, т.е. fork() в PHP е pnctl_fork(), но прави същото.

А конкретната задача идея си нямам как може да се реализира с PHP, но определено не мисля, че си избрал верния език.



Активен

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
Php и нещо подобно на threads при java
« Отговор #4 -: May 12, 2006, 11:26 »
Цитат (PAIN1 @ Май 10 2006,22:00)
за спорта реших си напиша прост чат клиент.
На Java съм го писал това, но тук нещо не мога да се усетя.
Клиента трябва едно временно да слуша на сокета си и да чете, но как да го накарам и да слуша и клавиатурата, оставя ли го да чака за вход от клавиатурата ще си седи там, та търся начин двете неща да работят паралелно.
Ако изобщо се изказвам правилно .....

Така като те слушам май се опитваш да направиш java applet с PHP. Само дето трудно ще постигнеш същата архитектура на приложението. Как искаш да постигнеш "клиентско" приложение с PHP, когато това е език, който най-често се изпълнява на сървъра?
Цитат (PAIN1 @ Май 10 2006,22:00)
Сега се опитвам да се обясня какво е това fork при php, но не намирам свястна и пълна документация. Опитвам се да разбера и това pcntl (от едното стигнах до другото и третото, но каква им е връзката и дали ще ми свършат работа).

Всяка функция на PHP е добре документирана и има примери. В случая (fork) става въпрос за ситемна функция в *IX среда. Наркос правилно ти е казал, че фукциите за контрол на процеси в PHP са с префикс pcntl_.
Активен

Г. Д. Сотиров

PAIN1

  • Напреднали
  • *****
  • Публикации: 432
    • Профил
Php и нещо подобно на threads при java
« Отговор #5 -: May 12, 2006, 11:56 »
1. що се отнася че всяка функция е добре документирана, повечето са, но не всички !
2. За избора на език, знам че не е най-подхосящия, просто реших да го пробвам, очевидно и ще го зарежа '<img'>
3. Не се опитвам да правя Java аплет с PHP-то.
Мерси на всички, очевидно няма да го бъде '<img'>
Активен

  • Гост
Php и нещо подобно на threads при java
« Отговор #6 -: May 12, 2006, 12:32 »
Сега остава важния въпрос: threads vs processes

Аз лично предпочитам втория вариант и то поради следните няколко причини:

1) Няма вариант един форк-нат процес да ти смаже цялото приложение.
2) Това че не могат да се споделят структури от данни (отделните процеси си имат отделни адресни пространства) не означава че не може  да комуникират ефективно помежду си - има си доволно много IPC механизми - кеф ти shared memory, сокети (UDS/TCPIP), пайпове, семафори, дори файлове - ся сигурно не е толкова удобно, но като функционалност е същата работа.
3) Предпочитам ядрото да се занимава с отделните процеси отколкото програмата да се занимава с нишките си - на SMP/NUMA системи предимството от това е огромно. Не виждам начин отделните нишки да се изпълняват на отделни процесори, но знам ли все пак може някой гениален мозък да се е сетил, хех
4) За пхп не знам, но на С има доволно много варианти за нишки - pthreads, NPTL, дори сам можеш да си измислиш нещо с помощта на clone() - функция, подобна на fork() с разликата че процесът споделя всичко с родителя си - файлови дескриптори, адресно пространство, PID, етц...с тази разлика че за комуникацията м/у отделните такива "нишки" и за стабилността на така направените "нишки" трябва сам да се погрижиш...и при все това не знам някой да се е засилил да прави тред-нати приложения. Едва наскоро направиха тред-нат apache за лайнукс.
5) уиндоуски и джава подходи - майната им, може да са нещо прекрасно ама мене лично не ми допадат.

И съжалявам за флейма, знам че ся ще се намерят хора да спорят за тва, няма да си променя мнението по въпроса '<img'>
Активен

PAIN1

  • Напреднали
  • *****
  • Публикации: 432
    • Профил
Php и нещо подобно на threads при java
« Отговор #7 -: May 12, 2006, 23:24 »
Това означава ли, че с fork() и разделянето на процесите може да се постигне това което писках ?
Активен

  • Гост
Php и нещо подобно на threads при java
« Отговор #8 -: May 13, 2006, 13:54 »
"Не виждам начин отделните нишки да се изпълняват на отделни процесори" жалко че не виждаш,защото е много близо до очите и сам си го написал...ядрото може се занимава с отделни процеси ,както и с отделни нишки!
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
java
Настройка на програми
jojopara 3 4099 Последна публикация Feb 03, 2003, 13:06
от Nerdboy
Приложение на Java под конзола
Настройка на програми
laik 3 2965 Последна публикация Jun 07, 2004, 19:23
от v_badev
приложение на Java
Общ форум
laik 3 3586 Последна публикация Jun 17, 2004, 13:10
от JOKe
Threads or Processes
Общ форум
Nikolavp 19 6139 Последна публикация Nov 03, 2008, 18:17
от gat3way
POSIX threads reader-writer lock
Общ форум
gat3way 17 5215 Последна публикация May 13, 2012, 00:17
от remotex