I would not use cron, just use the Twitter streaming API with a filter for your 150-300 twitter users.
statuses / filter
Returns public states corresponding to one or more filter predicates. You must specify at least one predicate parameter, pointer, location, or track. You can specify several parameters that allow most clients to use a single connection with the Streaming API. Placing long parameters in the URL may cause the request to be rejected for the excessive length of the URL. Use the POST request header parameter to avoid long URLs.
The default access level allows you to use up to 200 track keywords, 400 for users and 10 1-degree locations. Increased access levels allow 80,000 to follow users (role "shadow"), 400,000 to follow users (role "bird"), 10,000 keywords (role "restricted track"), 200,000 keywords of the track (role partner track) and 200 10- ("locRestricted"). Increased levels of access to the track also convey a higher proportion of statuses before restricting the flow.
I believe that when specifying user IDs, you do infact to get all the tweets from the streaming api:
All streams that are not selected by the user ID have the status of remote users with low quality. The results, which are selected by the user ID, are currently displayed only from the following predicate, which allow receiving statuses from low-quality users.
This will allow you to get results in real time, without fear of speed limits. You just need to make sure that you can receive the data quickly. But with 300 users that shouldn't be a problem.
Update. How to use the API. Unfortunately, I never had the opportunity to play with the streaming API. However, I have php demonological scripts (yes, I know that this is not the power of php, but if all else you do is php, this can be done).
I would install a simple php script to use the status and then dump them (raw JSON) into the message queue. Then I pointed out another script in the message queue to capture the statuses and put them into the database. Thus, the db connection and processing time do not interfere with just receiving streaming data.
From the views, if he phirehose will correspond to the first part of this decision. Something like beanstalkd (with pheanstalk ) will work as a message queue.