@fornit1917
- мне нужно после загрузки и обработки изображений перенаправить пользователя на страницу редактирования. Т. е. мне нужно знать, что
все фотки из панели загрузки либо обработались удачно, либо обработались неудачно (суть не в перехвате исключений).
- понятно про БД.
- не ясно про фоновый режим. что такое обработчик очередей я понимаю, но не пробовал использовать. читал про
redis,
activemq,
zeromq,
rabbitmq. нужен обработчик очередей, который можно использовать под
Windows (Server 2008) + простой пример его использования.
- на данный момент идея есть такая:
$app->post('/photos-upload', function() use ($app, $dbConn) {
// проверили все что нам нужно
$app->performAsyncPost('http://localhost:8090/mx/api/photos-process', array(
// отправляем всякие данные
'args' => 'data'
));
}
$app->post('/photos-process', function() use ($app, $dbConn) {
// отправляем что-то вроде curl http://localhost/pub?id=ch1 -d "Pending"
// делаем нужные нам операции
// отправляем что-то вроде curl http://localhost/pub?id=ch1 -d "Done"
}
public function performAsyncPost($url, array $params) {
foreach($params as $key => &$val) {
if(is_array($val)) $val = implode(',', $val);
$post_params[] = $key.'='.urlencode($val);
}
$post_string = implode('&', $post_params);
$parts = parse_url($url);
$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30);
$out = "POST ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".strlen($post_string)."\r\n";
$out.= "Connection: Close\r\n\r\n";
if(isset($post_string)) $out.= $post_string;
fwrite($fp, $out);
fclose($fp);
}
на клиентской стороне опрашивать
канал-файл