Hướng dẫn php try catch continue - php thử bắt tiếp tục

Tôi muốn viết một tập lệnh gọi một số mã nhưng tiếp tục chạy sau khi gọi nó. Ví dụ

function foo()
{
 $this->load_function_a();
 $this->load_function_b();
 echo 'A and B succesfully called';
}

Tôi muốn chức năng đầu ra được hiển thị ngay lập tức thay vì chờ hoàn thành xử lý cả hai chức năng. Bất kỳ ý tưởng làm thế nào để đạt được điều này trong PHP?

Đã hỏi ngày 7 tháng 2 năm 2015 lúc 13:17Feb 7, 2015 at 13:17

3

Điều này là bằng cách nào đó có thể nếu bạn không muốn hiển thị đầu ra của chức năng sau này.

Thay vì sử dụng

6, bạn cũng có thể in chiều dài nội dung thực và xuất ra thứ gì đó. Trình duyệt sau đó sẽ thấy rằng nó đọc tất cả các nội dung (ít nhất là anh ta giả định rằng) và tập lệnh của bạn sẽ tiếp tục chạy.

Đã trả lời ngày 7 tháng 2 năm 2015 lúc 13:39Feb 7, 2015 at 13:39

Kelunikkelunikkelunik

6.5802 Huy hiệu vàng38 Huy hiệu bạc69 Huy hiệu đồng2 gold badges38 silver badges69 bronze badges

3

Những gì bạn đang tìm kiếm, là các cuộc gọi chức năng không đồng bộ. PHP hỗ trợ đa luồng, mặc dù bạn cần phần mở rộng Pthreads được cài đặt trên máy chủ của mình. Tôi không phải là người đàn ông nhiều với chương trình đa luồng trong PHP (thêm .NET anh chàng trong những trường hợp đó: P), nhưng liên kết này có thể giúp bạn khá nhiều:

Pthreads

Đã trả lời ngày 7 tháng 2 năm 2015 lúc 13:33Feb 7, 2015 at 13:33

Ziga Petekziga PetekZiga Petek

3.7854 Huy hiệu vàng30 Huy hiệu bạc41 Huy hiệu Đồng4 gold badges30 silver badges41 bronze badges

Điều này thường không dễ dàng có thể khi chạy PHP trong môi trường web. Có thể có nhiều phương pháp "hacky" khác nhau để thực hiện điều này, tuy nhiên chúng sẽ không đáng tin cậy như gọi chức năng trong một chất hủy diệt hoặc sử dụng

7

Trong thực tế, câu trả lời đơn giản sẽ là:

function foo()
{
 $this->load_function_a();
 echo 'A succesfully called';
 $this->load_function_b();
}

Tuy nhiên, tôi cho rằng điều này sẽ không phù hợp với nhu cầu của bạn trong mã thực của bạn. Vì vậy, để giải quyết vấn đề này đúng, câu trả lời thực sự sẽ là sử dụng một số loại hàng đợi và bộ xử lý hàng đợi. Ví dụ:

  • Có chức năng B xếp hàng chức năng của nó và sau đó được xử lý bởi một công việc cron.
  • Sử dụng một cái gì đó như một RabbitMQ hoặc Gearman để xử lý chức năng của chức năng B một cách không đồng bộ.

Hi vọng điêu nay co ich!

Đã trả lời ngày 7 tháng 2 năm 2015 lúc 13:33Feb 7, 2015 at 13:33

Ziga Petekziga PetekA.B. Carroll

3.7854 Huy hiệu vàng30 Huy hiệu bạc41 Huy hiệu Đồng1 gold badge16 silver badges19 bronze badges

Điều này thường không dễ dàng có thể khi chạy PHP trong môi trường web. Có thể có nhiều phương pháp "hacky" khác nhau để thực hiện điều này, tuy nhiên chúng sẽ không đáng tin cậy như gọi chức năng trong một chất hủy diệt hoặc sử dụng

7

Trong thực tế, câu trả lời đơn giản sẽ là:freetuts.net, không được copy dưới mọi hình thức.

Tuy nhiên, tôi cho rằng điều này sẽ không phù hợp với nhu cầu của bạn trong mã thực của bạn. Vì vậy, để giải quyết vấn đề này đúng, câu trả lời thực sự sẽ là sử dụng một số loại hàng đợi và bộ xử lý hàng đợi. Ví dụ:

  • Có chức năng B xếp hàng chức năng của nó và sau đó được xử lý bởi một công việc cron.
  • Sử dụng một cái gì đó như một RabbitMQ hoặc Gearman để xử lý chức năng của chức năng B một cách không đồng bộ.
  • Hi vọng điêu nay co ich!
  • A.B. CARROLLA.B. CARROLL

2.3261 Huy hiệu vàng16 Huy hiệu bạc19 Huy hiệu đồng

Bàn trước chadag ta um Ì .thoát khỏi vòng lặp cho dù vòng lặp vẫn chưa kết thúc.

BÀi VIếT NÀY ĐượC ĐÓ

Nội phân Chún

for ($i = 1; $i <= 100; $i++)
{
    echo $i . ' ';
    if ($i == 20)
    {
        break;
    }
}

Câu lệnh phá vỡ

Câu lệNH tiếp tụcbreak để kết thúc.

Câu lệnh goto

Câu lệNH chết & thoát

BÀi VIếT NÀY ĐượC ĐÓ

for ($i = 1; $i <= 10; $i++)
{
    if ($i == 5)
    {
        continue;
    }
    echo $i . ' ';
}

Nội phân Chún

Câu lệnh phá vỡ

Câu lệNH tiếp tục

Câu lệnh goto

BÀi VIếT NÀY ĐượC ĐÓ:

$a = 12;
$b = 13;
$c = $a + $b;
 
echo $a;
 
goto label_end;
 
echo $b;
 
label_end;

Nội phân Chún

Câu lệnh phá vỡ

Câu lệNH tiếp tục

Câu lệnh goto

BÀi VIếT NÀY ĐượC ĐÓ

echo '123';
 
die(); // hoặc exit();
echo '456';

Nội phân Chún

Câu lệnh phá vỡ

Câu lệNH tiếp tục

Câu lệnh gotocâu lệnh continue trong php.
Có phải bạn đã quá mệt mỏi với vòng xoay công việc, nhưng bạn vẫn phải continue nó? Hãy cùng Kiyoshi tìm hiểu về câu lệnh continue trong php thông qua bài học sau đây.

Chúng ta sử dụng câu lệnh

9 trong php để bỏ qua các dòng lệnh tiếp theo của vòng lặp đang chạy.
Trong một vòng lặp, nếu xuất hiện lệnh
9 thì các câu lệnh tiếp theo lệnh
9 sẽ được bỏ qua, và chương trình quay lại đầu vòng lặp tiếp theo.

Cú pháp

Cách viết câu lệnh

9 trong php như sau:

continue;

Ví dụ

Hãy xem ví dụ dưới đây để hiểu rõ hơn:
Chương trình tính tổng các số lẻ nhỏ hơn 100

$count = 0;
$sum = 0;

while ($count < 100){
$count += 1;

if ($count % 2 == 0){
continue;
}


$sum += $count;
}
print 'sum = '.$sum;

Kết quả

sum = 2500

Ở ví dụ trên, lệnh

for ($i = 1; $i <= 100; $i++)
{
    echo $i . ' ';
    if ($i == 20)
    {
        break;
    }
}
0 được thêm vào bên trong vòng lặp
for ($i = 1; $i <= 100; $i++)
{
    echo $i . ' ';
    if ($i == 20)
    {
        break;
    }
}
1.Lệnh
for ($i = 1; $i <= 100; $i++)
{
    echo $i . ' ';
    if ($i == 20)
    {
        break;
    }
}
0 này xét biến $count là số chẵn hay lẻ, nếu là số lẻ thì sẽ cộng $count thêm vào biến $num. Còn nếu biến $count là số chẵn, thì sử dụng lệnh
9 để bỏ qua quy trình cộng $count thêm vào biến $num, và quay về đầu vòng lặp tiếp theo.

Giống như ví dụ trên, chúng ta có thể dùng lệnh

9 để bỏ qua các câu lệnh mà chúng ta không muốn xử lý, khi thoả mãn một điều kiện gì đó.

Lệnh

9 giống lệnh
8 ở chỗ chúng ta có thể chèn tự do vào vòng lặp để điều khiển xử lý vòng lặp theo ý muốn. Tuy nhiên lệnh
9 khác
8 ở chỗ, lệnh
8 sẽ dừng hẳn tất cả các vòng lặp của lệnh
for ($i = 1; $i <= 100; $i++)
{
    echo $i . ' ';
    if ($i == 20)
    {
        break;
    }
}
1 chứa nó, còn lệnh
9 chỉ bỏ qua các lệnh của vòng lặp hiện tại để bắt đầu một vòng lặp mới.

Ngoài ra lệnh

9 cũng giống lệnh
8 ở chỗ, trong một vòng lặp kép , chúng ta có thể chỉ định số thứ tự của lớp để quyết định sẽ bỏ qua bao nhiêu lớp của vòng lặp kép, như cách viết dưới đây:

0

Hãy xem ví dụ cụ thể dưới đây:

1

Kết quả

2

Vòng lặp kép ở ví dụ trên có hai lớp, một vòng lặp trong và một vòng lặp ngoài, với lệnh

9 nằm ở vòng lặp trong. Do chúng ta dùng lệnh
9 mặc định không chứa số thứ tự lớp, nên sau khi lệnh
9 được thực hiện, chương trình sẽ bỏ qua các dòng lệnh tiếp theo trong cùng lớp với lệnh
9(nằm trong vòng lặp trong) và quay về vị trí đầu vòng lặp trong.

Cùng với ví dụ trên nhưng với việc chỉ định số thứ tự lớp, hãy xem ví dụ dưới đây:

3

Kết quả

4

Do chúng ta chỉ định số thứ tự lớp (Lấy vòng lặp trong làm chuẩn là 1, thì vòng lặp ngoài có số thứ tự là 2 ), do đó khi lệnh

9 được thực hiện, chương trình sẽ bỏ qua cả các dòng lệnh trong cùng một lớp với lệnh
9 ( vòng lặp trong) và quay về vị trí đầu của vòng lặp ngoài. Sự khác biệt là vị trí di chuyển của chương trình là ở đầu vòng lặp trong hay là đầu vòng lặp ngoài.
Chúng ta cũng có thể thấy rõ ở ví dụ hai, chúng ta đã bỏ qua một số vòng lặp bên trong và chuyển thẳng sang vòng lặp bên ngoài, nên tổng được tính sẽ nhỏ hơn ở ví dụ 1.

Thực hành

Trăm hay không bằng tay quen, hãy cùng thực hành với ví dụ sau đây:
Chương trình in ra màn hình tất cả các số có 2 chữ số, mà chữ số tạo thành số đó đều nhỏ hơn 3

5

Bạn hãy viết lại các dòng code trên vào cửa sổ luyện tập online dưới đây, sau đó click vào nút

$a = 12;
$b = 13;
$c = $a + $b;
 
echo $a;
 
goto label_end;
 
echo $b;
 
label_end;
0 hoặc nhấn tổ hợp phím
$a = 12;
$b = 13;
$c = $a + $b;
 
echo $a;
 
goto label_end;
 
echo $b;
 
label_end;
1 và chờ xem điều gì sẽ xảy ra nhé.

Mở cửa sổ luyện tập mới

Tổng kết

Chúng ta dùng câu lệnh continue trong php để bỏ qua các câu lệnh tiếp theo của một vòng lặp. Trong một vòng lặp kép có nhiều lớp, chúng ta có thể quyết định số lớp muốn bỏ qua bằng cách chỉ định số thứ tự của lớp đó khi viết lệnh

9.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA