Мисля, че концепцията ви трябва да се промени.
PHP не може да планира задание, нито MySQL. Тригерите в MySQL се изпълняват, когато възникне mysql заявка, а не в определен момент. Нито едното, нито другото
Това ограничение обикновено не е проблем в уеб разработката. Причината е, че вашето PHP приложение трябва да контролира всички данни, които влизат и излизат. Обикновено това означава само HTML, който показва тези данни или други формати на потребителите или други програми.
Във вашия случай можете да мислите за това по този начин. Крайният срок е определена дата. Можете да го третирате като данни и да ги запишете във вашата база данни. Когато крайният срок настъпи, не е важен, а данните, които сте изпратили във вашата база данни, се разглеждат правилно.
Когато се направи заявка към вашето приложение, проверете дали датата на крайния срок е в миналото, ако е, след това покажете, че проектът е затворен - или актуализирайте, че проектът е затворен, точно преди показване.
Наистина няма причина да актуализирате данните независимо от вашето PHP приложение.
Обикновено единствените неща, които искате да планирате, са задачи, които биха повлияли на приложението ви по отношение на натоварването, или които трябва да се извършват само веднъж, или когато паралелността или времето са проблем.
Във вашия случай нито едно от тях не е приложимо.
PS:Не съм пробвал PHPscheduler, но мога да предположа, че не е истински планировчик. Cron е дямон, който заспива, докато дадена задача не е в опашката, изпълнява задачата, след което заспива до настъпването на следващата (поне това прави в текущия алгоритъм). PHP не може да направи това без разширенията на сокетите и вилките, като специална настройка. Така че PHPscheduler най-вероятно просто проверява дали датата за дадена задача е изтекла при всяко зареждане на уеб страница (всеки път, когато PHP изпълнява страница). Това не е по-различно от това, когато просто проверявате дали датата на проекта е изтекла, без режийните разходи за PHPScheduler.