¿Cuál es la mejor práctica para que un script PHP retome desde donde lo dejó?

Una mejor manera sería poner esta tarea en segundo plano y lejos del servidor web.

PHP se basa en solicitudes y debe finalizar esas solicitudes lo antes posible.

Lo que debe hacer es ejecutar PHP en la línea de comandos, reutilizar su código o reescribirlo en un lenguaje más adecuado. De esa manera no hay límite en cuanto tiempo puede funcionar.

Sin embargo, la mejor solución, la prueba más estable y más futura sería implementar una cola. Parece que está procesando “algo” que tiene un índice y no tiene una relación inmediata con el siguiente elemento. Entonces, si llena esos elementos en una cola, que puede ser solo una tabla de base de datos o, por ejemplo, RabbitMQ, no solo puede automatizarlo procesando las cosas a medida que ingresan, sino también procesarlas en paralelo y tal vez reducir el largo tiempo de ejecución.

Editar: si tiene que recogerlo como lo describe y no puede implementar ninguna de las otras soluciones debido a restricciones en el entorno, entonces creo que la solución que eligió, guardando un puntero al siguiente elemento, parece buena.