#!/usr/sbin/dtrace -s
#pragma D option quiet

BEGIN
{
printf("php scripts timer started\n");
}

:dtrace.so::function-entry
/ copyinstr(arg0) == "" && name[pid,copyinstr(arg1)] != 1 /
{
        printf("%d -> %-30s\n", pid, copyinstr(arg1));
	name[pid,copyinstr(arg1)] = 1;
}

:dtrace.so::function-entry
/ copyinstr(arg0) != "" /
{
	self->ts = timestamp;
}

:dtrace.so::function-return
/ copyinstr(arg0) != "" /
{
	self->elapsed = timestamp - self->ts;
	@time[pid, copyinstr(arg0)] = sum(self->elapsed);
}

END
{
	printf("<------ php scripts timer finished");
	printf("\n%10s %40s %14s\n", "PID", "PHP function", "Time elapsed");
	printa("%10d %40s %14@u\n", @time);
}

