Это проблема, которую вы обрисовали. Позвольте мне объяснить пару идей.
Прежде всего, если вы прервете первоначальный запрос на загрузку, единственный разумный способ проверить, выполняется ли он, - каждые несколько секунд опрашивать iPhone. Отправляйте запрос в «get-update.php» каждые 5 секунд, чтобы проверить, есть ли у вас данные.
Используя $ _SESSION, вы сможете хранить токен, который будет идентифицировать данные после завершения обработки.
Что касается самого процесса, вы можете достичь этого несколькими способами. Один из них - сделать довольно стандартную двойную вилку, отсоединив дочерний процесс от родительского, поэтому он продолжится после выхода из родительского процесса.
Другим (рекомендуемым) будет создание серверного процесса, который будет следить за запросами в вашей базе данных, извлекать их, обрабатывать и обновлять базу данных. Поэтому, когда исходный скрипт загрузки действительно загружает данные, PHP помещает их в базу данных, сохраняет идентификатор записи в $ _SESSION и возвращает пользователю.
Внутренний процесс заметит, что существует запись для обработки, чтения данных, вызова исполняемого файла и обновления базы данных с результатом.
Сценарий get-update.php будет читать $ _SESSION для идентификатора записи и проверять базу данных, если данные были обработаны (или в каком состоянии).
Если у вас нет возможности запустить фоновый процесс, и вы ограничены использованием PHP, вы можете выполнить магию двойного разветвления и разветвить другой процесс PHP, чтобы выполнить чтение / обновление / обновление базы данных.
Не стесняйтесь комментировать вопросы.
Вам нужен (а) хороший способ передачи данных в программу и (б) хороший способ вернуть данные.