Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 41

Необходимо написать реализацию асинхронного API на PHP

04.02.2016, 15:46. Показов 849. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать реализацию асинхронного АПИ на ПХП, а так же класс обертку для реализации запросов к нему на JavaScript.
Соот-но должен быть JS объект со следующим интерфейсом.
JavaScript
1
2
3
4
5
6
object AsyncApi {
public anyMethodName(),
public getRandomString()
}
 
var s = AsyncApi.getRandomString();
соот-но любой публичный метод делает запрос на сервер и получает ответ, если запрос еще выполняется, то сервер отдает ответ в JSON вида
{status: 'inprogress'}

соот-но AsyncApi выполняет запрос с определенным интервалом (допустим раз в 3 секунды) и проверяет статус ответа, до тех пор пока он не станет либо done либо error

В свою очередь при первом запросе сервер создает задачу и сохраняет ее в memcached (в тестовом задании можно сохранять в любое хранилище, в файл например), и сразу же отдает ответ {status: 'inprogress'}. И далее в фоне продолжает выполнять задание. Как только оно будет выполнено - он пишет в хранилище результат и при следующем запросе к АПИ его отдаст {status: 'done', result: {...}}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2016, 15:46
Ответы с готовыми решениями:

Средствами PHP и с использованием ООП php создать реализацию следующего интерфейса:
interface ArrayHelperInterface extends IteratorAggregate, ArrayAccess, Countable { /** * @param...

Необходимо написать php функцию. Динамически генерируются цифры для А и Б от 1 до 2 если А не равняется Б то в
необходимо написать php функцию. динамически генерируются цифры для А и Б от 1 до 2 если А не равняется Б то выводятся А и Б цифры, если...

Не получается, завершить реализацию входа на PHP
Добрый суток. Регистрация работает на ура!!!! А вход, не работает, в чем проблемы, подскажите пожалуйста, а лучше покажите пример из...

7
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
04.02.2016, 15:53
imediasun, а вопрос то где?
0
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 41
04.02.2016, 15:57  [ТС]
Вопрос в том чтобы вы истолковали эту задачу, если можно.
То есть мне задача поставленна такая, а как ее решить надо знать что может почитать, или конкретные примеры реализации посмотреть, спасибо
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
04.02.2016, 19:09
Цитата Сообщение от imediasun Посмотреть сообщение
Вопрос в том чтобы вы истолковали эту задачу, если можно.
Да вроде норм все написано, а если подробно то тут целое сочинение писать.
Делайте частями. Я бы начал примерно в таком порядке memcached, cron, ajax... Это конечно если вы вообще знакомы с веб программированием.
Когда начнете работать появятся более конкретные вопросы, форумного формата)
0
88 / 88 / 34
Регистрация: 22.05.2012
Сообщений: 404
04.02.2016, 22:41
Со своей точки колокольни я вижу такую реализацию ( в нескольких вариантах ) :
1) так себе:
1.1 Делаем php демона, отправляем задачу, получаем inprogress, периодически проверяем состояние аяксом пока не станет done...
2) боль-менее
2.1 для работы с очередями есть много разных приблуд, довольно неплохая RabbitMq, отправляем задачу, получаем статус, консьюмер может/не может отдавать ответ, подписчик так же. Тут можно диссертацию написать пл работе с кроликом, но для очередей штук харош. Недостаток- 1. для мелких задач - это убивать муху из танка. 2. При неправильной обработке ошибок подписчик может упасть но кролик будет продолжать отправлять ему задачи в никуда. Тут важно делать много правильных тестов.
3) Имхо гуд
3.1 Используем асинхронный серверный язык, самый простой вариант Nodejs для общения с клиентом юзаем сокет socket.io скажем. Можно в реальном времени отслеживать выполнение задачи и получать еще 100500 полезных данных паралельно при хендлинге всего 1-го соединения с сервером и 1-м процессе, полная асинхронность...
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
05.02.2016, 17:42
Цитата Сообщение от Programmer_ Посмотреть сообщение
вариант Nodejs для общения с клиентом юзаем сокет socket.io
а есть путевые ссылочки почитать про это в связке?
0
88 / 88 / 34
Регистрация: 22.05.2012
Сообщений: 404
06.02.2016, 00:08
Цитата Сообщение от Laroux Посмотреть сообщение
а есть путевые ссылочки почитать про это в связке?
Ну чего то подробного в мельчайших деталях я не встречал. Но вот есть парочка.
На примере чата
Немного корявая, на примере игры
На самом деле там все довольно просто, главное понять дзен сокетов. Есть небольшой недостаток ноды, сейчас уже выходит 5-я версия поэтому старые примеры могут не работать / глючить, нужно курить мануал по новым версиям. Но общая концепция остается та же
0
06.02.2016, 00:17

Не по теме:

эт совсем не "пхп для начинающих".. вообще

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2016, 00:17
Помогаю со студенческими работами здесь

Написать реализацию метода Replace
Написать реализацию метода Replace. Не использовать сам метод или какие-либо библиотечные функции при этом. Условие: решить с помощью...

Написать реализацию перегрузки функции
Написать реализацию перегрузки функции int func(int * arr, int lenght) int func(double * arr, int length) Функция func возвращает...

Написать реализацию клиента и сервера
Доброго времени суток.. Требуется ваша помощь: Необходимо написать две программа(Локальные клиент и Сервер). 1-ый процесс должен...

Написать реализацию перегруженных функций
Написать реализацию перегруженных функций: int func (double * arr, int length); int func (char * str);

Написать реализацию функции Pos
Нужно написать свою функцию POS. Без использования встроенных строковых функций(кроме length()). Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru