Я не уверен, выполнимо ли это или нет. Я запускаю cron для обработки данных, и они все независимы друг от друга.
Например, у меня есть данные [x, y, z], и у меня есть метод в родительском контроллере, который делает то, что ему нужно. Процесс занимает немного много времени, и, следовательно, моя очередь накапливается, потому что он делает по одному. Я пробовал процесс разветвления, но он теряет связь с базой данных Монго. Поэтому мне пришлось удалить вилку на данный момент, но, пожалуйста, дайте мне знать, если я смогу восстановить соединение.
ПСЕВДОКОД
MyTools.php
class MY_Tools extends CI_Controller {
...
public function process($item) {
Make curl request
Update database for the item
}
}
Tools.php
class Tools extends MY_Tools {
...
public function getAllDate() {
$data = fetchDataFromDB() => [X,Y,Z]
$i = 0
while ($i < sizeof($data) {
$this->process($data[$i]);
$i++;
}
}
}
если я смогу сделать это, не дожидаясь завершения другого процесса и просто продолжая, это будет здорово
Кроме того, я использую php7
библиотека cimongo для codeigniter и https://github.com/alcaeus/mongo-php-adapter
Возможное решение
Для php7 я использовал это для установки gearman
https://techearl.com/php/installing-gearman-module-for-php7-on-ubuntu
Библиотека редуктора Codeigniter, которую я использовал: https://github.com/appleboy/CodeIgniter-Gearman-Library
Чтобы преодолеть статический метод доступа к родительскому контроллеру, используйте метод singleton
Я боролся с этим немного и, надеюсь, это поможет кому-то
Пример
class MY_Tools extends CI_Controller {
private static $instance;
function __construct() {
parent::__construct();
self::$instance =& $this;
}
public static function get_instance()
{
return self::$instance;
}
}
Для доступа
MY_Tools::get_instance()->YOUR_PUBLIC_METHODS();
Надеюсь, что это может кому-то помочь