(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 Reports 2008 INTL WIN NUL License
КОМПАС-3D v17 Home
ESET NOD32 Антивирус - лицензия на 2 года на 3ПК
Symantec Endpoint Encryption, License, 1-24 Devices
Quest Software. SQL Navigator Professional Edition
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
Все о PHP и даже больше
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Taxlink - юридическая помощь (1)
Первая интерактивная платформа про налоги "TaxLink" - уникальный ресурс, созданный с целью...
 
Борьба с инсайдерами: подбираем амуницию (2)
Для защиты от инсайдеров лучше всего "СофтИнформ" юзать. У нас стоит, классная вещь. Реально всё...
 
Зимние сапоги (3)
Девчонки посоветуйте пожалуйста хорошие зимние http://dreamshoes.in.ua сапоги, смотрела на...
 
Интернет, Open Source и «Открытое сетевое общество» (2)
Великолепная статья. Постоянно ссылаюсь на нее в своих публикациях по солидарной информационной...
 
Интернет-магазин и его особенности. (1)
тест
 
 
 



    
rambler's top100 Rambler's Top100