Для проекта я использую большое количество данных и мне нужно разбить его на части для обработки. Этот процесс запускается несколько раз для разных пользователей. Все это работает хорошо. Тем не менее, иногда обработка должна выдать ошибку остановки, чтобы изящно вырваться из сценария (IE: не использовать die()
, а вместо этого записать ошибку) и продолжить с данными следующего пользователя.
Вот очень упрощенная версия моего скрипта. Я знаю, что это можно изменить в этом упрощенном режиме, чтобы полностью удалить функцию обратного вызова, но реальный сценарий требует, чтобы она была настроена следующим образом.
<?php
$user_data = array(
'User 1' => array(
array(
1,2,3,4,5,6,7,8,9,
),
array(
10,11,12,13,14,15,16,17,18,
),
),
'User 2' => array(
array(
1,2,3,4,5,6,7,8,9,10
),
array(
11,12,13,14,15,16,17,18,19,20
),
),
);
foreach($user_data as $data_chunks){
foreach($data_chunks as $data_set){
foreach($data_set as $data){
myFunction($data, function($returned_data, $stop){
if($stop){
//log error
break 2;
}
print $returned_data." ";
});
}
}
}
function myFunction($data, callable $f){
$stop = false;
if($data>5){
$stop = true;
}
$data_to_return = $data*2;
$f($data_to_return,$stop);
}
?>
Php выдает фатальную ошибку для
Неустранимая ошибка: невозможно прорваться / продолжить 2 уровня