Có cách nào trong PHP để kiểm tra xem một chức năng đã hoàn thành xử lý trước khi cho phép nó chạy lại?
Tôi có một chức năng trên trang tải/tải lại/kiểm tra sự kiện hẹn giờ xem các mục DB có nên hết hạn dựa trên ngày kết thúc [ngày ít hơn bây giờ] và nếu ngày ít hơn bây giờ tạo ra bản ghi của bản ghi với cùng một thông tin nhưng Thêm 10 ngày vào ngày kết thúc. Kịch bản sau đó đặt trạng thái bản ghi gốc thành không hoạt động. Điều này được yêu cầu để giữ một bản sao gốc của mục trong DB và quá trình tiếp tục cho mỗi bản ghi.
Đôi khi tập lệnh sẽ tạo ra nhiều bản sao của cùng một mục để có vẻ như tập lệnh không đặt trạng thái thành không hoạt động đủ nhanh và khi trang được tải lại/truy cập, v.v ... Một phiên bản khác của tập lệnh được chạy tạo ra một bản ghi trùng lặp khác.
Vì vậy, có cách nào để kiểm tra xem một hàm hiện đang chạy và nếu bỏ qua cuộc gọi mới chỉ có một trường hợp nào chạy?
Rất rất cảm ơn
Đã hỏi ngày 5 tháng 1 năm 2013 lúc 7:17Jan 5, 2013 at 7:17
2
Có vẻ như bạn cần một "Mutex". Bạn có thể thử sử dụng điều này hoặc tự thực hiện một tài nguyên được chia sẻ, chẳng hạn như viết một tệp trống vào đĩa và sau đó kiểm tra sự tồn tại của nó và xóa nó khi bạn hoàn thành.
Một giải pháp tốt hơn cho vấn đề cụ thể của bạn mặc dù sẽ là thiết lập một công việc cron để định kỳ chạy các tập lệnh bảo trì cơ sở dữ liệu của bạn thay vì dựa vào các yêu cầu người dùng ngẫu nhiên vào trang của bạn. Điều này sẽ đảm bảo nó sẽ không chạy quá thường xuyên và giảm xử lý cho mỗi yêu cầu.
Đã trả lời ngày 5 tháng 1 năm 2013 lúc 7:24Jan 5, 2013 at 7:24
mpenmpenmpen
263K261 Huy hiệu vàng820 Huy hiệu bạc1202 Huy hiệu đồng261 gold badges820 silver badges1202 bronze badges
2
Cho PHP:
$Running = false;
function functionName[] {
if [!$Running] {
$Running= true;
//Your logic implementation here
$Running= false;
}
}
Bạn cũng có thể sử dụng cùng một nguyên tắc cho các chức năng jQuery và cron công việc quá.
Đã trả lời ngày 15 tháng 3 năm 2016 lúc 5:51Mar 15, 2016 at 5:51
Anil Guptaanil GuptaAnil Gupta
1,5051 Huy hiệu vàng19 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge19 silver badges20 bronze badges
Sử dụng thử bắt
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
Đã trả lời ngày 25 tháng 7 năm 2018 lúc 1:07Jul 25, 2018 at 1:07
[Php 4, Php 5, Php 7, Php 8]
function_exists - return true
Nếu hàm đã cho đã được xác định — Return true
if the given function has been defined
Sự mô tả
function_exists [chuỗi $function
]: bool[string $function
]: bool
Thông số
function
Tên chức năng, như một chuỗi.
Trả về giá trị
Trả về true
nếu function
tồn tại và là một hàm, false
khác.true
if function
exists and is a function, false
otherwise.
Ghi chú::
Hàm này sẽ trả về
false
cho các cấu trúc, chẳng hạn như bao gồm_once và Echo.false
for constructs, such as include_once and echo.
Ví dụ
Ví dụ #1 function_exists [] Ví dụfunction_exists[] example
Ghi chú
Ghi chú::
Hàm này sẽ trả về
false
cho các cấu trúc, chẳng hạn như bao gồm_once và Echo.
Ví dụ
- Ví dụ #1 function_exists [] Ví dụ
- Ghi chú
- Tên hàm có thể tồn tại ngay cả khi chính hàm không thể sử dụng do cấu hình hoặc biên dịch các tùy chọn [với các hàm hình ảnh là một ví dụ].
- Xem thêm
- Phương thức_Exists [] - Kiểm tra xem phương thức lớp có tồn tại không
is_callable [] - Xác minh rằng một giá trị có thể được gọi là hàm từ phạm vi hiện tại. ¶
GET_DEFINED_FINSTS [] - Trả về một mảng của tất cả các hàm được xác định
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
0function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
1function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
2function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
3function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
4function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
5function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6class_exists [] - kiểm tra xem lớp có được xác định không ¶
extense_loaded [] - Tìm hiểu xem một tiện ích mở rộng có được tải không
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
7function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
8function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
9true
0
true
1
true
2Chris tại Candm Dot Org Dot Uk ¶ ¶
1 năm trước
true
3
true
4
true
5
true
6Kitchin ¶ ¶
10 năm trước
true
7
true
8
true
9
$function
0
$function
1
$function
2
$function
3
$function
4
$function
5
$function
6
$function
7
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Michael tại Squilopople Dot Com ¶ ¶
1 năm trước
$function
9
function
0
function
1
function
2Kitchin ¶ ¶
10 năm trước
function
3
function
4
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Michael tại Squilopople Dot Com ¶ ¶
7 năm trước
function
6
function
7
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Ayyappan dot ashok tại gmail dot com ¶ ¶
6 năm trước
function
9
true
0
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Bruceb ¶ ¶
10 năm trước
true
2
true
3
true
4
true
5
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Michael tại Squilopople Dot Com ¶ ¶
7 năm trước
true
7
true
8
true
9
function
0Ayyappan dot ashok tại gmail dot com ¶ ¶
7 năm trước
function
1
function
2
function
3
function
4
function
5
function
6
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Ayyappan dot ashok tại gmail dot com ¶ ¶
6 năm trước
function
8
function
9
false
0
false
1
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Bruceb ¶ ¶
7 năm trước
false
3
false
4
false
5
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Ayyappan dot ashok tại gmail dot com ¶ ¶
6 năm trước
false
7
false
8
false
9
false
0
false
1
false
2
false
3
false
4
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Bruceb ¶ ¶
10 năm trước
false
6
function
1
false
8Michael tại Squilopople Dot Com ¶ ¶
extense_loaded [] - Tìm hiểu xem một tiện ích mở rộng có được tải không
false
9
0
1
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Chris tại Candm Dot Org Dot Uk ¶ ¶
1 năm trước
3
4
5
6
7
8
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Kitchin ¶ ¶
6 năm trước
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
00function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
01function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
02function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
03function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
04function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
05function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
06function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
04function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
08function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
09function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Bruceb ¶ ¶
Andi tại Splitbrain Dot org ¶
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
11function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
12function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
13function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
1416 năm trước ¶
6 năm trước
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
15Bruceb ¶ ¶
Andi tại Splitbrain Dot org ¶
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
16function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
17function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
18function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
1916 năm trước ¶
6 năm trước
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
20function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
21function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
22function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
23function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
24function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
25function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6Bruceb ¶ ¶
6 năm trước
function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
27function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
28function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
29function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
30function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
31function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
09function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
33function blah[] {
try {
}
catch[Exception $e] {
echo 'Message: ' .$e->getMessage[];
}
}
6