Acho que seu conceito precisa mudar.
O PHP não pode agendar um trabalho, nem o MySQL. Os gatilhos no MySQL são executados quando ocorre uma consulta mysql, não em um momento específico. Nem
Essa limitação geralmente não é um problema no desenvolvimento web. A razão é porque seu aplicativo PHP deve controlar todos os dados que entram e saem. Normalmente, isso significa apenas o HTML que exibe esses dados ou outros formatos para usuários ou outros programas.
No seu caso, você pode pensar assim. O prazo é uma data definida. Você pode tratá-los como dados e salvá-los em seu banco de dados. Quando o prazo ocorre não é importante, é que os dados que você enviou em seu banco de dados sejam visualizados corretamente.
Quando uma solicitação for feita à sua aplicação, verifique se a data do prazo está no passado, se estiver, então exiba que o projeto está fechado - ou atualize que o projeto está fechado, pouco antes da exibição.
Realmente não há razão para atualizar os dados independentemente do seu aplicativo PHP.
Normalmente, as únicas coisas que você deseja agendar são trabalhos que afetariam seu aplicativo em termos de carga, ou que precisam ser feitos apenas uma vez, ou onde a simultaneidade ou o tempo são um problema.
No seu caso nada disso se aplica.
PS:Eu não tentei PHPscheduler, mas posso adivinhar que não é um verdadeiro agendador. Cron é um deamon que dorme até que uma determinada tarefa seja vencida em sua fila, executa a tarefa, então adormece até que a próxima seja vencida (pelo menos é o que faz no algoritmo atual). O PHP não pode fazer isso sem os sockets e as extensões fork, como configuração especial. Portanto, o PHPscheduler provavelmente está apenas verificando se uma data para uma tarefa expirou, em cada carregamento de uma página da Web (sempre que o PHP executa uma página). Isso não é diferente de você apenas verificar se a data do projeto expirou, sem a sobrecarga do PHPScheduler.