2012-06-12 46 views
5

Tôi đang tạo một tệp php sẽ chạy một sự kiện sau năm phút trôi qua. Từ tài liệu, có vẻ như đợi năm phút sẽ chỉ yêu cầu sleep(300), nhưng điều này không hoạt động. Tôi đã thử nghiệm tất cả các mã khác, và nó hoạt động tốt cho đến khi tôi thêm dòng sleep.PHP sleep() không hoạt động

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

Bạn có ý gì khi nó không hoạt động? Tập lệnh PHP có dừng hoạt động hoàn toàn khi bạn có lệnh gọi sleep() không? Nó có ngủ không, nhưng không phải trong năm phút? – andrewsi

+0

Nó không hoạt động chút nào. Nó không đăng bất cứ thứ gì lên Twitter, như nó cần. – SomeKittens

+1

'max_execution_time' trong php.ini của bạn là gì? Có lẽ kịch bản chỉ chạy quá lâu và do đó tồn tại trước khi mọi thứ được thực hiện. – enricog

Trả lời

8

Thử thêm set_time_limit(0); ở đầu tài liệu. Rất có thể là nó đạt đến "thời gian thực hiện tối đa" và khiến cho tập lệnh chấm dứt.

+0

Điều này nghe có vẻ như nó sẽ sửa chữa vấn đề, tôi sẽ cho bạn biết trong năm phút nếu nó làm việc. – SomeKittens

+0

Tuyệt vời! Cảm ơn nhiều. – SomeKittens

+2

Cách khác, 'set_time_limit (315);' hoặc 300 + bất kể thời gian thực hiện tối đa dự kiến ​​của bạn là bao nhiêu. Nếu vì một số quy trình lý do gặp khó khăn, tốt nhất là không nên xả hết bảng xử lý của bạn! – ghoti

Các vấn đề liên quan