> I've found the output of that unreliable
Cron is pretty solid software that has not changed much the last decade. If your Cron is unreliable at sending email, there's something unreliable about your setup, basically.
> having control over the output - email or log
Just have Cron pipe the output to a log file, and then cat the file if the script fails with a non-zero exit code:
(/usr/bin/myscript >/tmp/somelog 2>&1 || cat /tmp/somelog)
> Another neat trick is putting counters before and after the CURL call
Just run the script with "time":
((time /usr/bin/myscript) >/tmp/somelog 2>&1 || cat /tmp/somelog)
Your solution of using Curl to run a PHP command is a bit silly because it relies on a web server to do something that does not need involve a web server. It's complicated and failure-prone: if the web server is down, your scripts won't run, and if the web server overloads or is restarted during script execution, the script will probably be killed, or at best will continue to run after Curl finishes up.
At a systems-architectural level it also breaks separation of concerns.