Seguro que no es un problema de memoria?, porque por el hecho de limitar la cantidad de caracteres y se ejecuten más iteraciones parece obvia la respuesta. podrías poner lo siguiente dentro del while:
Código PHP:
Ver originalwhile(/* aqui tu condicion */) {
// Al inicio
// Aquí ejecutas todos tus procedimientos
// Al final
}
Es difícil sugerir una solución sencilla sin ver lo que haces dentro del while.
Una opción sería limitar el número de sitios, digamos a 20, y después ejecutar nuevamente el script mediante exec() (procesando en segundo plano) para continuar donde se quedó, ya sea que envíes una variable por GET o guardes en la base de datos.