Как использовать константы внутри Amp\parallelMap в PHP?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как использовать константы внутри Amp\parallelMap в PHP?

Сообщение Anonymous »

Мне нужна помощь с использованием глобальных констант внутри amp\parallelMap. У меня есть файл начальной загрузки require_once в моем проекте, где я определяю глобальные константы, такие как MAX_DATA.
Метод reCalc требует доступа к глобальной константе MAX_DATA< /code>, но я не могу получить к нему доступ внутри замыкания, переданного в ParallelMap. Я получаю сообщение об ошибке «Неопределенная константа MAX_DATA».
Вот упрощенная версия моего кода:

Код: Выделить всё

$pool = new DefaultPool(self::THREAD_COUNT);

$results = wait(parallelMap($data, function ($point) {
return $this->reCalc($point); // some time-intensive task
}, $pool));

Единственное решение, которое я нашел, — это снова определить константу внутри замыкания или снова включить файл начальной загрузки:

Код: Выделить всё

$max = MAX_DATA;

$pool = new DefaultPool(self::THREAD_COUNT);

$results = wait(parallelMap($data, function ($point) use ($max) {
if (!defined('MAX_DATA')) define('MAX_DATA', $max);

return $this->reCalc($point); // some time-intensive task
}, $pool));

Есть ли лучший способ получить доступ к глобальным константам внутри замыкания, переданного в ParallelMap, без их переопределения?

Подробнее здесь: https://stackoverflow.com/questions/790 ... map-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»