A Fiber is a lightweight concurrency primitive that allows you to pause and resume code execution, enabling cooperative multitasking within a single thread.
Click to reveal answer
beginner
How do you create and start a Fiber in PHP?
You create a Fiber by instantiating the Fiber class with a callable, then start it using the start() method, which runs the fiber until it suspends or finishes.
Click to reveal answer
intermediate
What method do you use to pause a Fiber's execution?
You use the Fiber::suspend() method inside the fiber's callable to pause execution and optionally send a value back to the caller.
Click to reveal answer
intermediate
How do you resume a suspended Fiber?
You call the resume() method on the Fiber instance, optionally passing a value that the fiber receives as the result of the suspend() call.
Click to reveal answer
intermediate
Why are Fibers useful for concurrency in PHP?
Fibers let you write asynchronous code in a synchronous style by pausing and resuming tasks cooperatively, improving readability and control without using multiple threads.
Click to reveal answer
Which PHP class is used to create a Fiber?
AFiber
BThread
CCoroutine
DAsync
✗ Incorrect
The Fiber class is the built-in PHP class used to create fibers for concurrency.
What method starts the execution of a Fiber?
Astart()
Bbegin()
Crun()
Dexecute()
✗ Incorrect
The start() method begins the execution of a Fiber.
How does a Fiber pause its execution?
AUsing yield
BUsing Fiber::suspend()
CUsing sleep()
DUsing wait()
✗ Incorrect
Fibers pause execution by calling Fiber::suspend() inside their callable.
What happens when you call resume() on a Fiber?
AIt stops the Fiber
BIt creates a new Fiber
CIt restarts the Fiber from the beginning
DIt continues execution from the last suspend point
✗ Incorrect
Calling resume() continues the Fiber's execution from where it was suspended.
Fibers in PHP help achieve concurrency by:
AUsing multiple processes
BRunning multiple threads simultaneously
CPausing and resuming code cooperatively in a single thread
DAutomatically parallelizing code
✗ Incorrect
Fibers allow cooperative multitasking by pausing and resuming code within a single thread.
Explain how Fibers enable concurrency in PHP and how you control their execution.
Think about how you can stop and start a task manually inside one thread.
You got /4 concepts.
Describe the lifecycle of a Fiber from creation to completion.
Consider the steps you take to run, pause, and finish a Fiber.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of using Fiber in PHP?
easy
A. To speed up database queries automatically
B. To create permanent background threads
C. To pause and resume code execution for concurrency
D. To replace all loops with asynchronous calls
Solution
Step 1: Understand Fiber's role
Fibers allow pausing and resuming code blocks, enabling concurrency without threads.
Step 2: Compare options
Only To pause and resume code execution for concurrency correctly describes Fibers' purpose; others describe unrelated features.
Final Answer:
To pause and resume code execution for concurrency -> Option C
Quick Check:
Fibers = pause and resume concurrency [OK]
Hint: Fibers let you pause and resume code easily [OK]
Common Mistakes:
Thinking Fibers create real threads
Assuming Fibers speed up database automatically
Confusing Fibers with async loops
2. Which of the following is the correct way to start a Fiber in PHP?
easy
A. $fiber->run();
B. $fiber->execute();
C. $fiber->begin();
D. $fiber->start();
Solution
Step 1: Recall Fiber methods
The Fiber class uses start() to begin execution.
Step 2: Check other options
Methods like run(), begin(), and execute() do not exist for Fiber.
Final Answer:
$fiber->start(); -> Option D
Quick Check:
Fiber starts with start() method [OK]
Hint: Use start() to begin Fiber execution [OK]
Common Mistakes:
Using run() instead of start()
Trying to call execute() or begin()
Confusing Fiber methods with thread methods
3. What will be the output of this PHP code using Fiber?
A. Fiber::suspend() cannot be called without a value
B. Fiber must be started with start(), not resume() first
C. Fiber constructor requires a return type declaration
D. Fiber cannot echo strings inside its function
Solution
Step 1: Check Fiber start method usage
Fibers must be started with start() before calling resume().
Step 2: Validate other options
Calling Fiber::suspend() without value is allowed; no return type needed; echo is valid inside Fiber.
Final Answer:
Fiber must be started with start(), not resume() first -> Option B
Quick Check:
start() first, then resume() [OK]
Hint: Always start Fiber with start() before resume() [OK]
Common Mistakes:
Calling resume() before start()
Thinking suspend() needs a value
Expecting Fiber function to require return type
5. You want to run two Fibers concurrently to simulate two tasks. Which approach correctly switches between them to print alternating messages?
$fiber1 = new Fiber(function() {
for ($i = 0; $i < 3; $i++) {
echo "A$i ";
Fiber::suspend();
}
});
$fiber2 = new Fiber(function() {
for ($i = 0; $i < 3; $i++) {
echo "B$i ";
Fiber::suspend();
}
});
// Which code below correctly alternates execution?
A) {
$fiber1->start();
$fiber2->start();
$fiber1->resume();
$fiber2->resume();
}
B) {
$fiber1->start();
$fiber1->resume();
$fiber2->start();
$fiber2->resume();
}
C) {
$fiber1->start();
$fiber2->start();
$fiber2->resume();
$fiber1->resume();
}
D) {
$fiber1->start();
$fiber2->start();
$fiber1->resume();
$fiber1->resume();
}
hard
A. Start both fibers, then alternate resume calls: fiber1->resume(), fiber2->resume()
B. Start and resume fiber1 twice before starting fiber2
C. Start both fibers, then resume fiber2 before fiber1
D. Start both fibers, then resume fiber1 twice without resuming fiber2
Solution
Step 1: Understand Fiber suspension
Each Fiber suspends after printing one message, so to alternate, we must resume them in turn.
Step 2: Analyze options for alternating resumes
Start both fibers, then alternate resume calls: fiber1->resume(), fiber2->resume() starts both fibers, then resumes fiber1 and fiber2 alternately, producing alternating output. Others resume one fiber multiple times or in wrong order.
Final Answer:
Start both fibers, then alternate resume calls: fiber1->resume(), fiber2->resume() -> Option A
Quick Check:
Alternate resume calls for concurrency [OK]
Hint: Alternate resume calls to switch between fibers [OK]
Common Mistakes:
Resuming one fiber multiple times before the other
Starting fibers but not resuming correctly
Resuming fibers in wrong order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.