С "&" в конце команды вы выполняете эту команду в фоновом режиме (фон в ОС, не php), затем функция system () php немедленно возвращает результат, даже если команда работает в течение 20 минут. Php скрипт переходит к следующей инструкции до тех пор, пока не завершится без ожидания окончания выполнения команды, запущенной с system (). Если вы хотите проверить, когда команда завершена, вы можете добавить команду в системный вызов () для проверки.
7za имеет много кодов выхода (см. https://sevenzip.osdn.jp/chm/cmdline/exit_codes.htm)
system("7za a path/zip_file -mem=AES256 -v2g -mx9 -pPassword path/zipcontent > /dev/null 2>&1 ; echo $? > /tmp/myfile.txt &")
При этом вы можете попытаться записать код возврата для выхода (в командной оболочке "$?" - это код возврата для выхода предыдущей команды) в временный файл и периодически проверять его. Если он содержит 0, извлечение успешно завершено, вы можете отправить электронное письмо. Кроме того, вы можете написать bash оболочку сценария, которая будет извлекать, проверять, отправлять электронную почту и вызывать эту функцию обработчика сценариев system ()
Это не лучшее решение для меня, но объяснить, как работать с внешним процессом в php с использованием system ()
Существует расширение PHP, https://www.php.net/manual/en/book.pcntl.php, возможно, оно может помочь вам