(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Дискуссии и обсуждения общего плана"

В данной конференции обсуждаются материалы (новости, статьи и пр.) опубликованные на сайте и не привязанные к каким-то другим тематическим конференциям, а также вопросы общего плана - предложения по развитию и улучшению сайта, замечания (потерянные линки, возможное некорректное использование материалов, наличие кряков (crack), keygen (политика сайта по отношению к материалам типа "скачать" и "download" - никаких(!) кряков, crack, keygen и пр.)).

 
 
Добавить сообщение »

Тема: Обсуждение материала "Разработка многозадачных приложений на PHP V5"

Многие PHP-разработчики полагают, что поскольку в стандарте PHP отсутствуют возможности для обработки потоков (thread), невозможно организовать работающее многозадачное PHP-приложение. Например, если приложению нужна информация с другого Web-сайта, оно должно остановиться и подождать завершения извлечения этой удаленной информации. Это не правда! Узнайте о внутрипроцессной (in-process) многозадачности в PHP, использующей функции stream_select и stream_socket_client.

Автор:  http://OPTIMIZATSIYA.BIZ Дата: 29.07.2012 16:35
[открыть ссылку]
Ответить на сообщение »
 
Автор:  tester Дата: 07.11.2011 13:06
Многие PHP-разработчики полагают что то что не дано им готового просто невозможно. Многозадачность в PHP это элементарно. Есть такая штука как кооперативная многозадачность которая в PHP будет работать на порядки быстрее этих костылей. Она реализуется в PHP тривиально. Для этого нужно написать всего 4 функции
class CTask
static function Start($task_name)
static function poll()
function SetTask($task_name)
function End()

И еще 3 что бы с этим было удобно работать.
function rcall($_this,$name) // вызвать задачу как "подпрограмму" этой задачи
function rnext($_this,$res=array()) // закончить выполнение этой задачи. Вернуться к выполнению предыдущей задачи если вызывались из другой задачи.
function rstart($_this,$name) // запустить новую задачу

Причем это настоящая многозадачность. Т.е. любая задача может делать что угодно, а не только обрабатываться в stream_select. Вот пример работы такой многозаданости:

Start 10000 iterations
Average time:
Task: 'init' Time = 13.08 μs - это "пустая" задача. Она инициализирована и готова делать что надо. Фактически это время перключения контекста задачи.
Task: 'init_and_start_new_task' Time = 37.08 μs - эта задача занимается тем что запускает другую задачу (третью)
Task: 'init_and_exit' Time = 27.54 μs - эта задача занимается тем что завершает свое исполнение

Total time of 3 tasks = 87.96 μs

Total test time 0.958099 sec
Done.

После запуска всех задач скрипт входит в бессконечный цикл в котором всего одна команда CTask::poll(); который и исполняет все задачи

Реально можно считать что типовая, правильно написанная задача будет занимать примерно 50 мксек на одном цикле выполнения. Если сильно не нагружать процессор, то можно считать что задачи выполняются 10% времени, тогда можно легко исполнять примерно 1 мсек / 50 мксек = 20 задач одновременно если поставить после CTask::poll(); usleep(9000); Таким образом время реакции системы будет около 10 мсек при 20 задачах и 10% использовании процессора. Такого количества задач при таком времени реакции заглаза хватает для большинатва проектов. При этом для обеспечения самой многозадачности ничего не грузится и не запускаются внешние приложения и все задачи могут взаимодействовать между собой через общую область памяти. Хотя каждой отдельной задаче ничто не мешает запускать внешние процессы если надо.
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
SAP® Crystal Dashboard Design Departmental 2016 WIN INTL NUL
WinRAR 5.x Standard Licence - для частных лиц 1 лицензия
The BAT! Home Upgrade- 1 компьютер
VMware Workstation 14 Pro for Linux and Windows, ESD
Обновление с КОМПАС-3D V16 Home до КОМПАС-3D v17 Home
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Один день системного администратора
Мастерская программиста
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Где дают займ без проверок? (3)
Подскажите, пожалуйста, где сейчас дают нормально займы без проверок и всяких справок? Было бы...
 
Офис (4)
Впервые снимаю маленький офис, прошу совета. Контактное лицо с данного сайта готово заключить...
 
Недорогой секс (3)
Подскажите, где я могу получить реально недорогой секс в Москве, или тут все проститутки...
 
Отдых для программистов (4)
Приветик всем. Давайте в этой теме, немного отвлечемся от насущных проблем и обсудим отдых для...
 
Топовая футболочка (3)
Посоветуйте, где можно купить крутые футболки, качественные с интересными и яркими принтами....
 
 
 



    
rambler's top100 Rambler's Top100