В настоящее время мы разрабатываем приложение с приложением Google для PHP и хотели бы оптимизировать наши расходы.
Несколько раз в день (утро, вечер, полночь) у нас большое количество вычислений, которые запускаются фоновым заданием. Подзадачи занимают около 3-5 минут каждая и сериализуются (то есть завершенная подзадача помещает следующую подзадачу в запрос), чтобы поддерживать одновременно как можно меньшее количество используемых экземпляров. Это приводит к довольно долгому времени расчета.
Существуют ли случаи в день (например, в полночь), когда у экземпляров более высокая стоимость?
Есть ли способы сэкономить еще немного?
Есть ли способы улучшить время вычислений, например, переставив независимые вычисления в другом порядке?
Заранее спасибо!
Изменить: Пример кода — все фоновые файлы выглядят примерно так
require_once 'google/appengine/api/taskqueue/PushTask.php';
use google\appengine\api\taskqueue\PushTask;
$cron_data = get_cron_data();
if(empty($cron_data)) {
end_cronjob($cron_data["cron_id"]);
exit();
}
$data_array = db_select ( "SELECT * FROM db_table WHERE id > ".
$cron_data["data_id"] ." ORDER BY id ASC LIMIT 5");
if(empty($data_array)) {
end_cronjob($cron_data["cron_id"]);
exit();
}
foreach($data_array as $d) {
calculate($d);
update_cronjob($cron_data["cron_id"], $d["data_id"]);
}
$task = new PushTask('/this_task', ["cron_id" => $cron_data["cron_id"]]);
$task_name = $task->add();
exit();
Задача ещё не решена.
Других решений пока нет …