目錄
回复内容:
首頁 後端開發 php教程 php如何 使用多线程?

php如何 使用多线程?

Jun 06, 2016 pm 04:45 PM
hadoop java php spark storm

业务场景:从api接口获取数据,插入到数据库中,这个过程大概几个小时,我想用多线程技术来改造,但不知如何下手。其他方式也行。

补充一句:对php未来方向不明,java有很多重量级东西,如hadoop,spark,storm等等,php何去何从?

回复内容:

其实,你这里真是的需求,只是希望在Web这边获取一种方式,来执行一个长达数小时的“异步”任务。就PHP而言,可以用2种方式来做:
(1)在PHP里使用shell_exec的函数,以shell的方式,启动一个独立的PHP脚本执行。这种方式,其实相当于在Web服务器处理过程中,独立起了一个shell进程处理你的任务。这里,需要特别注意的是shell_exec的服务器安全,注意校验参数,小心避免被带入shell命令中。这个是比较容易实现的方式。
(2)使用PHP实现一个Server,监听一个端口,为Web端提供服务。这里的实现方式有很多,通常要配合扩展,例如原生的pthread(多线程),开源扩展swoole等等。

直接在web程序里使用多线程,是不恰当的,web请求通常有时间限制,例如timeout默认是30秒。你如何保证,在线程任务执行完之前,它的父进程仍然在工作? swoole 好了 Swoole: PHP的异步、并行、分布式扩展,解决你的问题 可以使用php的命令行模式运行,只不过这不是多线程,而是多进程。
更复杂的方式,可以使用gearman。 小菜说一下见解。
这个场景并不一定用多线程来解决吧。用多进程较稳定。
然后业务场景中。插入到数据库中。是哪种数据库呢。不会是因为写锁的问题吗?
PHP用进程或者线程或者异步等等都是可以的。很多大牛写的扩展可以帮助你做到。至于业务场景下的性能得自己去测试了。
至于PHP的话,你可以多去了解别人所说的快和慢指的是什么,7出来了的改进。同时PHP主要是web开发脚本。比较的意义在哪里要懂得。
还有大牛一般并不只会一种语言吧。或者说的是不拘泥于一种语言。
all in interesting.
说的不好的地方望巨巨们指点。
-------------------------------------
阅读完最新答案,补充一句,其实我也想说‘异步’解决就好。2333 多进程一样的可以做到这个效果。 php 本身不支持多线程,不过有些扩展可以帮你做到 多线程可以用扩展,php_pthreads,优点支持WIN和lin双平台,缺点php必须运行在线程安全模式下,CGI方式运行就不要想了。 Spark是Scala写的 花2天学习nodejs,然后用async库,很方便实现你的需求,很多东西配合起来用,比较好
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

php程序在字符串中計數元音

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

突破或從Java 8流返回?

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

您如何在PHP中解析和處理HTML/XML?

Java 變得簡單:程式設計能力的初學者指南 Java 變得簡單:程式設計能力的初學者指南 Oct 11, 2024 pm 06:30 PM

Java 變得簡單:程式設計能力的初學者指南

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

創造未來:零基礎的 Java 編程

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

Java程序查找膠囊的體積

See all articles