2011-07-18 26 views
21

Tôi có tập lệnh .php mà tôi sử dụng để tạo danh sách sản phẩm của mình. Tôi đang ở trên máy chủ chia sẻ, vì vậy tôi không thể thực hiện nhiều truy vấn nếu không tôi sẽ nhận được một trang trống.Php, đợi 5 giây trước khi thực hiện một hành động

Đây là cách tôi sử dụng kịch bản của tôi bây giờ:

script.php?start=0&end=500&indexOfFile=0 ->> make a product0.txt file with first 500 products 

script.php?start=501&end=1000&indexOfFile=1 ->> product1.txt file with another 500 products 

script.php?start=1001&end=1500&indexOfFile=2 ->> product2.txt file with last 500 products 

Làm thế nào tôi có thể sửa đổi kịch bản vì vậy nó sẽ làm cho tất cả những tập tin tự động, vì vậy mà tôi không cần phải thay đổi mỗi lần vào liên kết bằng tay?

Tôi muốn nhấn một nút mà sẽ làm điều này:

làm cho các tập tin product0.txt với các sản phẩm đầu tiên 500

chờ đợi 5 giây

làm cho các tập tin product1.txt với với 500 sản phẩm khác

chờ 5 giây

làm cho tệp product2.txt với các sản phẩm cuối cùng 500

+6

Trong vòng chưa đầy thời gian nó mất bạn viết những dòng này, bạn có thể đã sao chép nội dung của script.php , dán nó hai lần nữa, mã hóa các giá trị '$ start' và' $ end' trong mỗi phần và thêm 'sleep (5)' vào giữa mỗi copy/paste. Đó là toàn bộ kịch bản. –

+0

lol @dan :) ... – Brian

+0

cách tốt nhất tôi nghĩ là truy xuất tất cả các sản phẩm bạn cần trong một mảng toàn cục, sau đó cắt nó, ghi dữ liệu vào các tệp riêng biệt và bạn đã hoàn tất.Chỉ cần một truy vấn sql – krifur

Trả lời

36

sử dụng:

sleep(NUMBER_OF_SECONDS); 
17

trước khi bắt đầu hành động của bạn, sử dụng

sleep(5); 
4

hay:

usleep(NUMBER_OF_MICRO_SECONDS); 
0

Tôi đang trên chia sẻ lưu trữ, vì vậy tôi không thể thực hiện nhiều truy vấn nếu không tôi sẽ nhận được một trang trống.

Điều đó nghe rất kỳ lạ. Tôi đã có gói hosting PHP rẻ nhất mà tôi có thể tìm thấy cho dự án cuối cùng của mình - và nó không hoạt động như thế này. Tôi sẽ không trả tiền cho một dịch vụ đã làm. Thật vậy, tôi stumped để thậm chí biết làm thế nào tôi có thể cấu hình một máy chủ để nhân rộng hành vi này.

Bất kể lý do tại sao nó hoạt động theo cách này, thêm một giấc ngủ ở giữa tập lệnh không thể giải quyết được sự cố.

Vì, có lẽ, bạn kiểm soát danh mục sản phẩm của mình, các sản phẩm mới phải tương đối không thường xuyên (hoặc bạn đang cố gắng để có được báo cáo chứng khoán?). Nếu bạn kiểm soát khi bạn thay đổi dữ liệu, tại sao chạy tập lệnh tự động? Hoặc bạn có nghĩa là bạn đã có các URL này và bạn nhận được các tệp dự kiến ​​khi bạn chạy chúng mỗi lần?

+1

anh ta có thể nhận được kết quả trống vì anh ấy không giải phóng kết quả sau khi thực hiện mỗi truy vấn –

-2
<?php 
    foreach($i = 0; i < 500; $i++){ 
     your_code; 
     delay(3); // 3 seconds 
    } 
?> 
+2

foreach là không cần thiết và sự chậm trễ không phải là một chức năng trong PHP mà tôi biết. – MSC

0

Trong Jan2018 giải pháp duy nhất làm việc cho tôi:

<?php 

if (ob_get_level() == 0) ob_start(); 
for ($i = 0; $i<10; $i++){ 

    echo "<br> Line to show."; 
    echo str_pad('',4096)."\n";  

    ob_flush(); 
    flush(); 
    sleep(2); 
} 

echo "Done."; 

ob_end_flush(); 

>

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