2012-06-12 5 views
5

Sto facendo un file php che eseguirà un evento dopo che sono trascorsi cinque minuti. Dai documenti, sembra che aspettare cinque minuti richiederebbe solo sleep(300), ma questo non funziona. Ho testato tutti gli altri codici e funziona perfettamente finché non aggiungo la riga sleep.PHP sleep() non funzionante

<?php 
/** 
* Twitter App 
* bagelBack.php 
* Takes parameters from $_POST and creates a tweet 
* RKoutnik, 2012 
* Code originally found on http://140dev.com/twitter-api-programming-tutorials/hello-twitter-oauth-php/ 
*/ 

$name = '@'.$_POST['twitterName']; 
$type = $_POST['bagelType']; 

/* BEGIN CONTENT SPINNER TO IMPRESS LYNK */ 
$bagels = array(
    0 => "bagel", 
    1 => "breakfast treat", 
    2 => "doughy food-type item", 
    3 => "round yeast-raised munchie", 
    4 => "doughnut-shaped roll", 
    5 => "hard-crusted treat" 
); 
$finished = array(
    0 => "finished toasting", 
    1 => "completed toasting", 
    2 => "stopped being raw", 
    3 => "concluded the toasting phase", 
    4 => "been sucessfully executed", 
    5 => "been roasted to a crisp" 
); 

$food = $bagels[array_rand($bagels)]; 
$fin = $finished[array_rand($finished)]; 
sleep(300); 
$tweet_text = $name.", Your ".$type." ".$food." has ".$fin; 

$result = post_tweet($tweet_text); 
echo "Response code: " . $result . "\n"; 

function post_tweet($tweet_text) { 

    // Use Matt Harris' OAuth library to make the connection 
    // This lives at: https://github.com/themattharris/tmhOAuth 
    require_once('tmhOAuth.php'); 

    // Set the authorization values 
    // In keeping with the OAuth tradition of maximum confusion, 
    // the names of some of these values are different from the Twitter Dev interface 
    // user_token is called Access Token on the Dev site 
    // user_secret is called Access Token Secret on the Dev site 
    // The values here have asterisks to hide the true contents 
    // You need to use the actual values from Twitter 
    $connection = new tmhOAuth(array(
    'consumer_key' => '[redacted]', 
    'consumer_secret' => '[redacted]', 
    'user_token' => '[redacted]', 
    'user_secret' => '[redacted]', 
    'curl_ssl_verifypeer' => false 
)); 

    // Make the API call 
    $connection->request('POST', 
    $connection->url('1/statuses/update'), 
    array('status' => $tweet_text) 
); 

    return $connection->response['code']; 
} 
?> 
+1

Cosa intendi per non funziona? Lo script PHP smette di funzionare completamente quando si chiama sleep()? Dorme, ma non per cinque minuti? – andrewsi

+0

Non funziona affatto. Non pubblica nulla su Twitter, come dovrebbe. – SomeKittens

+1

Qual è il tuo 'max_execution_time' nel tuo php.ini? Forse lo script è troppo lungo e quindi esiste prima che venga fatto qualcosa. – enricog

risposta

8

Provare ad aggiungere set_time_limit(0); nella parte superiore del documento. È probabile che stia raggiungendo il "tempo massimo di esecuzione" e che lo script termini.

+0

Sembra che risolverà il problema, ti farò sapere in cinque minuti se funziona. – SomeKittens

+0

Fantastico! Grazie mille. – SomeKittens

+2

In alternativa, 'set_time_limit (315);', o 300 + qualunque sia il tempo di esecuzione massimo previsto. Se per qualche motivo i processi si bloccano, è meglio non esaurire il tuo tavolo di processo per sbaglio! – ghoti