How to find bad PHP node that makes search_cron fail?
i was facing this issue after upgrading a big application from 6 to 7.This is what I did. From the database run this query 

SELECT n.nid FROM node n LEFT JOIN search_dataset d ON d.type = 'node' AND d.sid = 
n.nid WHERE   
d.sid IS NULL OR d.reindex &lt;&gt; 0 ORDER BY d.reindex ASC, n.nid asc


This will give you the last node that is giving you issues and has refused to be re-indexed. 
From there you can do what you want with that node. For my case I realized it was a whole content type that was not displaying well. I had to resave one of the fields to allow this content type to display.