Используя HTTPContext через потоки

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

Поэтому я думаю, что вам было бы лучше сделать несколько вещей:

1) Создайте контроллер под названием MY_Controller.php в application / core и расширьте все контроллеры из него (таким образом вы сможете централизовать свои методы )

2) Пользователь для каждого контроллера меню. Поэтому Controller = Menu1 или Menu2

3) Старайтесь, чтобы ваши представления были максимально использованы повторно, чтобы избежать усложнения вещей

В итоге вы должны получить что-то вроде этого:

[110 ]

Имейте в виду, что с Codeigniter следующий URL приведет к:

url: menu1/submenu1/param1/param2

Controller
function submenu1($param1,$param2)

Таким образом, нет необходимости получать компоненты URI, поскольку CI будет маршрутизировать их автоматически.

13
задан Tom Ritter 10 April 2009 в 13:24
поделиться

3 ответа

Хотя HttpContext предназначен для обработки контекста, который не является специфичным для потока (поскольку контекст http может начинаться в одном потоке и заканчиваться в другом), он не является поточно-ориентированным. 12128] По сути, проблема в том, что вы делаете что-то, что не предназначено, эти запросы обычно бывают множественными, и у каждого есть свое назначенное HttpApplication для выполнения запроса, и у каждого есть свой собственный HttpContext.

Я действительно попытался бы разрешить инфраструктура asp.net сама делегирует запросы.

4
ответ дан 2 December 2019 в 01:41
поделиться

Ваши коллеги правы, если один поток блокирует ресурс, а другой пытается его использовать, то ваш пул потоков выходит бум! Не очень хороший результат. Большинство людей решают эту проблему, создавая новые объекты и передавая их в параматизированные потоки. Если вам абсолютно необходимо использовать один и тот же объект, вы должны реализовать некоторый код, который сначала проверяет, используется ли ресурс другим потоком, а затем немного подождет, прежде чем проверять снова. Примером может быть создание bool IsInUse, который вы всегда проверяете сначала, а затем ваш поток устанавливает его в значение true, если он использует этот ресурс, а затем в false, когда это делается, предотвращая попытки других потоков использовать базовый ресурс (ваш httpContext). , Надеюсь, это поможет.

2
ответ дан 2 December 2019 в 01:41
поделиться

Поскольку HttpContext является частью библиотеки .Net, я ожидаю, что все статические функции являются поточно-ориентированными, но любые нестатические члены не являются потокобезопасными при вызове одного и того же экземпляра объекта. Поэтому надеюсь, что в следующий раз вы ожидаете, что при совместном использовании экземпляра HttpContext между потоками возникнут проблемы.

Есть ли способ, которым вы можете отделить операции, которые вам необходимо выполнять параллельно, с HttpContext? Если они просто загружают данные и записывают в формат CSV, этот код не имеет необходимой зависимости от пользовательского элемента управления ASP.NET или жизненного цикла страницы. После удаления этой зависимости вы можете реализовать страницу с помощью асинхронного HttpHandler, выполняя параллельные операции во время между IHttpHandler.BeginProcessingRequest () и IHttpHandler.EndProcessingRequest ().

1
ответ дан 2 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: