Build your WordPress website with Elementor.Discover Elementor Affiliate link
Français

Site appearance

Security · Intermediate

Wordfence scan stops: identify the stage and resume targeted diagnosis

Wordfence scan stuck or interrupted? Keep the log, check startup and per-stage limits, then test one setting with a rollback plan.

Source published: · Source updated: · Editorial policy

Read the French edition

Distinguish an incomplete scan from a screen that has stopped refreshing

Wordfence reports Scan Failed, stops at a stage, or ceases displaying new items. The problem may concern starting the job, a stage being interrupted, or only the progress display. A tab left inactive for a long time does not distinguish these situations.

The scanner performs several operations and may restart processes to continue its work. An HTTP 200 response to one of its requests does not prove that the entire scan finished. Likewise, a few files checked before stopping do not necessarily cover the entire expected scope.

The desired result is an execution reaching completion, or precise evidence of the failing stage to enable a targeted correction. We first retain the existing state, then choose one diagnostic route. Starting several scans, increasing every limit, or erasing plugin data would reduce precision and could add load without explaining the stop.

Check the product and intervention scope

This approach assumes Wordfence Security is already installed and an account authorized to view its diagnostics. The verified version is 9.0.2 by Mark Maunder, requiring at least WordPress 4.7 and PHP 7.0, with testing declared up to WordPress 7.1.4. Installing a second scanner is unnecessary to understand this first failure.

Identify whether the scan belongs to production, a copy, or a network site. A copy may have different access protection and network routing. Its result helps reproduce a problem but does not automatically describe production’s connectivity capabilities.

Troubleshooting a scanner is not site cleanup. If signs of intrusion exist, preserve evidence and prepare a separate response during analysis. Do not assume that the stopped scan caused those signs, or that a later completed scan alone will establish site integrity. Here we will restore or document execution of the check without deleting flagged files or modifying content to test the scanner.

Keep the log and last stage before restarting

In Wordfence > Scan, record the final message, last timestamp, and number of items examined. Keep the activity log already available, including a few lines before the stop. A screenshot showing only a percentage does not identify the operation in progress.

Record versions, time window, special settings, and recent changes. Keep these items in a private record; logs may contain paths or architecture information. Publishing a complete report or sending credentials is unnecessary to begin this record.

If the exact message is “Scan rate limit reached for this license key”, privately check whether the same key was reused on the site and a copy. This is a different problem from a PHP timeout. Have the license owner confirm assignments; do not publish the key or change execution limits to bypass this message.

  1. Confirm that no other scan is still running before proposing another attempt.
  2. Record whether the stop precedes the first checked item or occurs during a specific analysis.
  3. Back up the state of options you are considering changing.
  4. Prepare a time window and suitable copy for possible tests.
  5. If a real operation is already running or scheduled, preserve available evidence and have the owner decide on resumption. Documentary collection does not require restarting the site.

Read checks without treating every failure as a cause

Open Wordfence > Tools > Diagnostics and examine checks related to connections, loopback to the site, and resources relevant to the time window. A positive test now does not necessarily describe the state during the earlier scan. An isolated warning is not an automatic explanation of the stop either.

The Log Files section may offer PHP logs discovered by the product. Otherwise, consult the domain’s logs in the hosting panel. Search for the same time: a fatal error, exhausted memory, rejected SQL query, or service interruption requires different corrections.

Keep the first significant message and its context. Values displayed in a terminal may differ from the web PHP executing the scan; have that context’s version and limits confirmed. Do not add a public configuration page to complete the record. This stage should produce a trace-supported hypothesis or precisely identify missing information. A series of green boxes does not replace the log of the process that actually stopped.

Handle a startup that does not reach the scanner

If no item is examined, process startup or resumption deserves checking before file-analysis limits. Wordfence normally uses a server-to-site request to trigger its work. Environment authentication, a server rule, or incorrect resolution can interrupt that route.

Have the exact request located in the recorded time window, along with its address, status, and responding layer. A protection page returned with status 200 may still differ from the expected response. Status alone therefore does not demonstrate that the process received what it needed.

Correct trigger integration with existing protection. Do not open all of wp-admin to the public or remove password protection from a copy containing private data. The owner must provide legitimate internal access that preserves protection. If the request never reaches PHP, changing scanner memory is not the right first adjustment. After correction, an authorized attempt should show startup passing its blocking point; that does not yet validate every subsequent stage.

Test remote startup only for this need

Wordfence provides a remote mechanism when the server cannot trigger the scan through its usual connection. The site then contacts the Wordfence service, which calls back to start the job using a token intended for this purpose. This setting changes the startup route, not the budget for every stage.

This route applies if the destination is accessible under the hosting policy and diagnosis indicates a startup problem. An entirely private copy may not accept this external callback; it must not be exposed solely to pass the test.

  1. Record the initial state in Wordfence > Tools > Diagnostics > Debugging Options.
  2. During the authorized window, enable only Start all scans remotely and save.
  3. Run one prepared attempt and record whether startup passes the previous stage.
  4. If it changes nothing, restore the initial setting before another test.
  5. If startup works, check the rest of the scan and document the remaining network cause. Do not disable SSL verification or an entire protection to retain this result.

Adjust stage duration when a limit is confirmed

In Wordfence > Scan > Scan Options and Scheduling > Performance Options, Maximum execution time for each scan stage controls work before continuation through a new request. This setting is not the total duration allowed for the entire scan.

If the log or provider confirms an interruption related to process duration, choose a stage budget below the effective limits. The documentation notably suggests a test at 15 seconds; this value is relevant only if the environment allows that margin. A very low value multiplies resumptions and may itself add work.

The Time limit that a scan can run in seconds field sets the total scan duration; it is distinct from the per-stage maximum. If the log says the scan exceeded its total duration, a fifteen-second stage setting does not by itself address that cause. Record the total field, volume traversed, and hosting limits before agreeing on a suitable value. Keep the initial setting for rollback.

  1. Record the initial value and the web PHP context’s limits, along with service limits.
  2. During the prepared window, change only the per-stage duration to a justified value, for example 15 seconds when confirmed limits are higher.
  3. Save with Save Changes and authorize one attempt.
  4. Compare the stage reached, scan completion, and resources used.
  5. If the test brings no benefit, restore the initial value. Do not make processes unlimited or add a general server directive preventing their interruption without analyzing its scope.

Reduce load spikes without hiding checks

Use low-resource scanning spreads the work over a longer period. This mode may help when scanning causes resource spikes; it is not a universal repair for a connection or process that never starts. Keep its initial value and test it separately from a stage-duration change.

In Scan Options and Scheduling > Performance Options, enable this option within the prepared scope, then observe an authorized attempt. Check that the total scan budget remains appropriate: spreading the work does not guarantee completion before an already insufficient global limit. Do not declare the problem solved because the site appears less loaded for a few minutes.

If the log reports exhausted memory, the How much memory should Wordfence request when scanning field does not automatically reserve that memory and cannot override every provider constraint. Have a value confirmed that is compatible with resources actually available. Do not arbitrarily remove detection categories to obtain a completion message. Any scope reduction must be explicit, justified, and mentioned in the check result.

Enable detailed logging for one prepared investigation

When the existing state does not identify the stop, Wordfence offers more detailed collection. It increases writes and load; it must not become a permanent setting or be enabled alongside a series of other changes.

Prepare the time window and a means of retrieving the log privately. Also keep available PHP and server logs, because the scanner may not record its own interruption. Absence of a message in its activity does not rule out a limit applied outside the plugin.

  1. In Tools > Diagnostics > Debugging Options, record the state of Enable debugging mode.
  2. Temporarily enable only this setting and save.
  3. Perform one authorized attempt in the prepared context.
  4. Keep the detailed activity from the Scan page with its time and last stage.
  5. Immediately restore the initial setting and store the useful excerpt privately.
  6. Send only information necessary for diagnosis. Do not send the complete report through an email button without identifying the recipient and checking its content.

Isolate a conflict only when a trace justifies it

If an error names a precise component, compare its version and configuration on a copy before changing the entire installation. A plugin active at failure time is not automatically responsible. The first relevant message, named file, and timeline guide isolation.

A copy must retain the characteristics needed for the problem: the same PHP context, relevant files, and, when startup is involved, a comparable network route. Neutralize its external effects and protect its data. Do not simply copy sensitive production to an open domain to make scanning easier.

Deactivate only the component confirmed as a lead on this copy, keep its initial state, then compare an authorized test. If the defect disappears, look for a compatible setting or official fix; this remains a clue to confirm before production intervention. Do not delete Wordfence tables or reset all its parameters to obtain an apparently fresh installation. You would lose the comparison and security settings without knowing which difference actually changed behavior.

Verify scan completion and scope

After a useful change, check that execution finishes and retains the planned checks. A scan with excluded categories does not cover the same scope as the initial scan. The result must mention that difference rather than promise that everything was checked.

Compare duration, counters, last stage, and new messages. A browser log or HTTP 200 response does not replace this final state. Also check that the site remains available during the test and no other operation was disrupted by load.

  1. Confirm completion reported by Wordfence and absence of a new failure state.
  2. Record the categories and exclusions actually active.
  3. Compare PHP and server errors for the same time window.
  4. Check the homepage and administration without triggering a payment or send for this check.
  5. Archive the result with the changed setting and its rollback. Flagged files then require their own analysis; do not choose automatic deletion to finish scanner troubleshooting.

Undo tests that do not explain the stop

Restore each temporary option to its initial state after a test without a useful result. Remote startup, detailed logging, stage duration, and resource mode have different effects; undoing one does not restore the others. A short change list makes this check easier.

If a server fragment was changed in a separate intervention, its owner must restore it with syntax checking and its application mechanism. Do not copy a generic block into .htaccess to prevent all process interruption: its scope may extend beyond the affected scan.

A repeated failure with the same precise trace deserves targeted analysis rather than another combination of settings. Keep the last usable state and private evidence, then send the observed limits to the provider or publisher according to the relevant layer. Rollback must also restore protections potentially affected by a conflict test on the copy. Do not leave an environment less protected merely because the scanner did not finish.

Prepare a useful record without concluding that the site is clean

The final record should specify the environment, versions, time, last stage, counters, and first useful message. Add results only from tests actually performed, options changed, and their final state. Separate observations from remaining hypotheses.

If the stop remains unexplained, specify which logs are missing and who can provide them. A provider seeing a received request can help locate its processing and applied limits; an isolated positive status is insufficient to attribute the cause to the plugin or server. Ask for correlation of that time window and process.

Finally, a completed scan does not replace a verified restoration or an investigation into suspicious modifications. An incomplete scan does not prove an intrusion either. Keep the two questions separate to choose the right actions. Resolution in this guide means obtaining controlled execution and scope, or evidence precise enough for the next correction, without uncontrolled reruns or generally weakened protection.

Build a comparison that distinguishes the two time limits

Before the test, separately record the maximum duration of a stage and the total scan duration. Add the start time, last stage reached, number of items checked, and first error message. This sheet avoids confusing an interrupted request with a limit on the whole execution.

An educational example: if hosting interrupts every process after approximately thirty seconds, a shorter stage budget may give the scanner time to arrange continuation. Conversely, if stages progress but the log explicitly reports the end of the total budget, shortening each stage does not extend that budget. The thirty seconds in this example do not describe your hosting: ask for its effective limit before choosing a value.

A third case is stopping before the first item. Check triggering and the callback to the site; a higher memory setting will not repair a refused route. If the destination returns an authentication page with 200, keep the content type and observed route in the private record.

Make one justified change, then compare the before-and-after sheets. A completed scan with new exclusions is not comparable to the initial scope. Restore every ineffective option and disable temporary logging. The free scanner already installed supplies this diagnosis; the expected result is a completed, documented execution, not a general declaration of no intrusion.

Sources and references

Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.

View 6 references

English translation of the reviewed French edition. Code examples retain their original identifiers, comments and output strings for reproducibility. Linked exercise files and original screenshots may contain French. No new practical tests or price checks are implied by translation.

Continue reading in English