2012-06-12 2 views
5

5 분이 지난 후에 이벤트를 실행하는 PHP 파일을 만들고 있습니다. 문서에서 5 분을 기다리는 것만으로 sleep(300)이 필요할 것으로 보이지만 작동하지 않습니다. 다른 모든 코드를 테스트했는데 sleep 행을 추가 할 때까지 제대로 작동합니다. 문서의 상단에 set_time_limit(0);를 추가PHP sleep() not working

<?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

작동하지 않는다는 것은 무엇을 의미합니까? sleep() 호출이있을 때 PHP 스크립트가 완전히 작동하지 않습니까? 잠이 들었지 만 5 분 동안은 아니야? – andrewsi

+0

전혀 작동하지 않습니다. 그것은 트위터에 아무것도 게시하지 않습니다. – SomeKittens

+1

php.ini의'max_execution_time'은 무엇입니까? 어쩌면 스크립트가 너무 오래 실행되고 있으므로 아무 것도 수행되기 전에 존재할 수도 있습니다. – enricog

답변

8

보십시오. 스크립트가 종료 될 확률이 최대 실행 시간에 도달하고 있습니다.

+0

문제가 해결 될 것 같아서 효과가 있으면 5 분 안에 알려 드리겠습니다. – SomeKittens

+0

굉장! 고맙습니다. – SomeKittens

+2

또는'set_time_limit (315);', 또는 300 + 예상 최대 실행 시간입니다. 어떤 이유로 프로세스가 멈춘다면 우연히 프로세스 테이블을 배기하지 않는 것이 좋습니다! – ghoti